For a form to post to the FaaS service it has to have fields that match the field names as specified in the API.
Common name | FaaS Field name | Example | Maximum Length |
Address1 | BillingAddress1 | 2200 Kraft Drive | 100 |
Address2 | BillingAddress2 | Suite 1175 | 100 |
Address3 | BillingAddress3 | | 100 |
City | BillingCity | Blacksburg | 50 |
State or Province | BillingStateProvince | VA | 50 |
Postal Code | BillingPostalCode | 24060 | 20 |
Country Code | BillingCountryCode | 840 | 3 |
Shipping Address
Common name | FaaS Field name | Example | Maximum Length |
First Name | ShippingFirstName | John | 50 |
Middle Initial | ShippingMI | C | 1 |
Last Name | ShippingLastName | Smith | 50 |
Email | ShippingEmail | John.Smith@domain.com | 50 |
Phone | ShippingPhone | 123 456 7890 | 50 |
Address1 | ShippingAddress1 | 2200 Kraft Drive | 100 |
Address2 | ShippingAddress2 | Suite 1175 | 100 |
Address3 | ShippingAddress3 | | 100 |
City | ShippingCity | Blacksburg | 50 |
State or Province | ShippingStateProvince | Virginia | 50 |
Postal Code | ShippingPostalCode | 24060 | 20 |
Country Code | ShippingCountryCode | 840 | 3 |
Custom Question
Common name | FaaS Field name | Example | Maximum Length |
Question | FieldName | Employer | 200 |
Answer | FieldValue | Click & Pledge | 500 |
Example:
<input name="FieldName" type="hidden" value="Employer"/>
<input name="FieldValue" type="text" maxlength="500" size="50 />
In case of multiple custom questions use a numerical suffix as shown below:
<input name="FieldName1" type="hidden" value="Employer"/>
<input name="FieldValue1" type="text" maxlength="500" size="50 />
<input name="FieldName2" type="hidden" value="Occupation"/>
<input name="FieldValue2" type="text" maxlength="500" size="50 />
<input name="FieldName3" type="hidden" value="Place of Employment"/>
<input name="FieldValue3" type="text" maxlength="500" size="50 />
eNewsletter Subscription
Custom question is an optional field
Common name | FaaS Field name | Example | Maximum Length |
Provider | eNewsletterName1 /2/ 3 | ConstantContact, MailChimp, iContact, PredictiveResponse | n/a |
List name | SubscribeList1 /2/ 3/ | Membership | 50 |
Notes:
The integrated newsletter providers are numbered according to the following list. The name & the respective list should be numbered accordingly.
- eNewsletterName1 = ConstantContact
- eNewsletterName2 = MailChimp
- eNewsletterName3 = iContact
- eNewsletterName4 = PredictiveResponse
Example:
<input name= "eNewsletterName1" type="hidden" value="ConstantContact" />
Membership: <input name="SubscribeList1" type="checkbox" id="SubscribeList1" value="Membership" />
Weekly Updates: <input name="SubscribeList1" type="checkbox" id="SubscribeList1" value="Weekly Updates" />
Alerts: <input name="SubscribeList1" type="checkbox" id="SubscribeList1" value="Alerts" />
Monthly Updates: <input name="SubscribeList1" type="checkbox" id="SubscribeList1" value="Monthly Updates" />
<input name="eNewsletterName2" type="hidden" maxlength="200" size="40" value="MailChimp "/>
Membership: <input name="SubscribeList2" type="checkbox" id="SubscribeList2" value="Membership" />
Weekly Updates: <input name="SubscribeList2" type="checkbox" id="SubscribeList2" value="Weekly Updates" />
Alerts: <input name="SubscribeList2" type="checkbox" id="SubscribeList2" value="Alerts" />
Monthly Updates: <input name="SubscribeList2" type="checkbox" id="SubscribeList2" value="Monthly Updates" />
Product Information
Common name | FaaS Field name | Example | Maximum Length |
Item ID | ItemID1 | 12345 | 20 |
Item Name | ItemName1 | Donation | 50 |
Quantity | Quantity1 | 1 | 10 |
Unit Price | UnitPrice1 | 100 | 10 |
Other field [special case]* | OtherPrice1 | 5.50 | 10 |
Unit Deductible | UnitDeductible1 | 100 | 10 |
Unit Deductible %* | UnitDeductible1 | 50% [for 50% tax deductible] | 10 |
Unit Tax | UnitTax1 | 0 | 10 |
Unit Discount | UnitDiscount1 | 0 | 10 |
SKU | SKU1 | 100-ABCD-2011 | 100 |
Important Note:
ItemID: Item Id is a unique number assigned to each Item. Items cannot have the same ItemId's.
UnitDeductible: The portion of the UnitPrice that is tax deductible. The amount will be based on the value passed (10 = $10 and 10%=10%). Total tax deductible portion of the item will be calculated based on multiplying the quantity by the UnitDeductible.
Total Tax Deduction = UnitDeductible x Quantity
Example:
Case 1:
· Unit Price = $50
· UnitDeductible = 10
o Total tax deductible = $10
Case 2:
· Unit Price = $50
· UnitDeductible = 10%
o Total tax deductible = $5
OTHER field
FaaS service design is based on simplifying processing payments through simple forms without any need for additional programming. Based on this requirement a problem presents itself when donation forms have donation amounts listed as radio buttons with an additional field which is typically labeled as OTHER.
To help with the “OTHER” field problem the following provision is now a feature of FaaS:
- $10
- $20
- $50
- $100
- OTHER
- [OTHER field]
In the above scenario a radio form field passes UnitPrice as the value of the radio field. If the value which is passed by the UnitPrice is “OTHER” then FaaS looks for the amount which is in a text field labeled “OTHER”.
The following is a sample HTML demonstrating the above presentation:
<input type="radio" name="UnitPrice1" id="radio" value="10" />$10<br />
<input type="radio" name="UnitPrice1" id="radio" value="20" />$20<br />
<input type="radio" name="UnitPrice1" id="radio" value="30" />$30<br />
<input type="radio" name="UnitPrice1" id="radio" value="40" />$40<br />
<input type="radio" name="UnitPrice1" id="radio" value="50" />$50<br />
<input type="radio" name="UnitPrice1" id="radio" value="OtherPrice1" />Other<br />
Other <input name="OtherPrice1" type="text" id="OtherPrice1" size="10" />
If the radio button option for Other is selected, the Other field text value will be used by FaaS as the value passed.
Multiple products
As shown in Example 001 multiple products may be added to any form by simply incrementing the fieldname for each item. The following provides a quick overview example:
<input name="UnitPrice1" type="text" id="UnitPrice1" value="5" size="10" />
<input name="UnitDeductible1" type="hidden" id="UnitDeductible1" value="100%" />
<input name="ItemID1" type="hidden" id="ItemID1" value="1" />
<input name="ItemName1" type="hidden" id="ItemName1" value="Cause 1" />
<input name="Quantity1" type="hidden" id="Quantity1" value="1" />
<input name="SKU1" type="hidden" id="SKU1" value="ABC-1234" />
<input name="UnitPrice2" type="text" id="UnitPrice2" value="10" size="10" />
<input name="UnitDeductible2" type="hidden" id="UnitDeductible2" value="5" />
<input name="ItemID2" type="hidden" id="ItemID2" value="2" />
<input name="ItemName2" type="hidden" id="ItemName2" value="Cause 2" />
<input name="Quantity2" type="hidden" id="Quantity2" value="1" />
<input name="SKU2" type="hidden" id="SKU2" value="DEF-1234" />
There is no limit on the number of elements that may be passed.
Shipping Information
Shipping information is an optional field
Common name | FaaS Field name | Example | Maximum Length |
Method | ShippingMethod | FedEx | 20 |
Fee | ShippingValue | 30 | 50 |
Tax | ShippingTax | 2 | 50 |
Important Note
The following are key points in dealing with shipping.
- For Shipping to be added to the receipt ShippingMethod has to have a value. If the value is blank no shipping will be posted.
- In the absence of "Shipping Address" nodes "Billing Address" will be used for "Shipping Address" nodes.
Campaign
Connect campaigns may be assigned to a form. Assigned campaign totals will update with all transactions. Fraud Setting as well as Receipt templates will be used per campaign setting. The receipt template may be changed by using the Receipt Template GUID as listed in a separate node.
Common name | FaaS Field name | Example | Maximum Length |
Connect Campaign | ConnectCampaignAlias | YearEnd2017 | 50 |
GiveBig Campaign | GiveBigCampaignAlias | Academy2017 | 50 |
Receipt Information
Common name | FaaS Field name | Example | Maximum Length |
Receipt Template | ReceiptTemplateGUID | b3680dc9-7ee3-4430-be64-1d622179581e | 36 |
Send Receipt | SendReceipt | true | 10 |
Notification List | EmailNotificationList | test@test.com;someone@elsewhere.com | 45 |
Transaction Type 2 | TransactionType | Payment | Authorize Payment PreAuthorization |
Important Note
1 TransactionType is only available for Merchant accounts. The setting will be ignored for in-house accounts. The following describes the behavior of each option:
- Authorize: The transaction will be authorized but will not settle. Manual settlement with the gateway will be required.
- Payment: The transaction will be submitted for settlement upon authorization. No manual intervention will be required.
- PreAuthorization: The transaction will be submitted as $0. PreAuthorization posts back the VaultGUID for the credit card which may be used for future transactions. Nothing will be processed or charged to the card.
Recurring Transactions
Recurring Transaction is an optional field
Common name | FaaS Field name | Example | Maximum Length |
Recurring Method | RecurringMethod | Subscription | Subscription* Installment |
Number of payments** | Installment | 12 | 20 |
Periodicity | Periodicity | Month | Week
2 Weeks Month 2 Months Quarter 6 Months Year |
* Subscription is the default value. If the node is not present, Subscription will be used as the recurring method.
** The optional “LastPaymentDate” may be used in place of Installments when an end date for a recurring payment is needed. In certain forms a donor may want to choose a recurring option where an end date is selected rather than the number of payments. End date has the following attributes:
- LastPaymentDate: dd/mm/yyyy
End date may also be broken down into its elements as follows:
- LastPaymentDateYear (yy)
- LastPaymentDateMonth (mm)
- LastPaymentDateDay (dd)
Special Condition:
- Installment = 999: The special case of 999 translates to indefinite recurring payments. The receipt message for the recurring payment will NOT display the END DATE and will ask the patron to contact the organization for cancellation.
Payment Information
The following payment types are supported:
Credit Card
Common name | FaaS Field name | Example | Maximum Length |
Payment Type | PaymentType | CreditCard | |
Name On Card | NameOnCard | John Smith | 50 |
Card Number | CardNumber | 4111111111111111 | 17 |
Cvv2 | Cvv2 | 123 | 4 |
Expiration Date* | ExpirationDate | 04/15 | 5 |
Expiration Month | ExpirationMonth | 04 | 2 |
Expiration Year | ExpirationYear | 15 | 2 |
Expiration Date may be passed on as a single value as 04/20 or it may be passed individually as month and year. This provision is designed to help with a simple form where month and year are pull-down menus and are posted individually.
Check
Gateways: TSYS
Common name | FaaS Field name | Example | Maximum Length |
Payment Type | PaymentType | Check | |
Routing Number | RoutingNumber | 123456 | 9 |
Account Number | AccountNumber | 123456 | 17 |
Account Type | AccountType | CheckingAccount, SavingsAccount | |
Check Type | CheckType | Company, Personal | |
Check Number | CheckNumber | 12345 | 10 |
The following additional fields required for Global Payments gateway.
Common name | FaaS Field name | Example | Maximum Length |
ID Type | IdType | Driver or Military or State | |
ID Number | IdNumber | 12345678910 | 30 |
ID State Code | IdStateCode | VA [state abbreviation code] | |
CustomPaymentType
Custom Payment may be used as a payment method where Click & Pledge will only process the transaction by posting it to the API but no money will be settled or transacted. Examples for Custom Payment method may be Pay Later, Cash, etc. The CustomPaymentNumber is optional.
Common name | FaaS Field name | Example | Maximum Length |
Custom Payment Name | CustomPaymentName | Cash | 50 |
CustomPaymentNumber | CustomPaymentNumber | 12345 | 50 |
Service Response
The following responses are sent back as part of the URL upon Authorization:
- on = Order number
- vg = Vault GUID
- au = Authorization code
- gn = Gateway transaction number
- RefID = Reference ID (post back of RefID as shown below).
- HashResponse = The hash code response based on the security code. Format: [SecurityCode][Order Number][Amount]
- Login to the administrative portal
- Click on Account Info > Profile > API Information
- In the FaaS Security Service:
- Secret Key: Enter a maximum of 50 characters as a secret key. The secret key will be included in the hashcode
- Hash Algorithm: MD5, SHA-1, SHA-256, SHA-348, SHA-512
- [Amount] needs to be the full amount with decimal included, for example: 25.00
example: https://www.clickandpledge.com/developers/faas/example/response/authorize.asp?on=1182513157454111&vg=5f86601d-0ae0-4c0f-9d74-dba9a70fa349&au=220632&gn=4e552ade-9e98-3000-0034-0003ba9896f7&RefID=Example-000
The following forum posts may also be of help:
Reference ID
Common name | FaaS Field name | Minimum Length | Maximum Length |
Reference ID | RefID | 0 | No Limit |
Reference ID (RefID) may be passed as a hidden variable. The value of RefID will be posted back to the service response URL upon authorization, decline, or error.
Account Information
Account Information may be obtained by logging into the Connect portal at https://login.connect.clickandpledge.com/ > Launcher > Settings > API Information > API Account Information.
Common name | FaaS Field name | Example | Maximum Length |
GUID* | AccountGuid | ddd31189-9a80-41d9-99e7-fdbb4350893c | 36 |
Account ID* | AccountID | 14521 | 10 |
Order Mode
Common name | FaaS Field name | Example | Maximum Length |
Order Mode | OrderMode | Production | Production / Test |
Tracker | Tracker | Campaign123 | 50 |
DecimalMark
Amounts may be entered by the end user using comma as a thousand separator or period as thousand separator. This problem does not have an easy solution from a usability perspective. The programmer needs to either write a JavaScript to unify the number format or show an error / warning message asking the end user not to use a thousand separator. To help those programmers that do not know JavaScript the following option offers a regional setting that forces the FaaS system to respond according to a set standard. See examples for details.
Common name | FaaS Field name | Values | Maximum Length |
DecimalMark | DecimalMark | US, ISO (Default = US) | 3 |
Example:The end user enters $1234.56 (One thousand two hundred thirty four Dollars and 56 Cents using a thousand separator as: $1,234.56
The FaaS service will interpret the value differently based on the following settings:
While there is no easy solution for this problem, the suggested solution offers the most freedom for developers to set the standard based on their regional or standard preference.
Convenience Fee
Convenience fee may be added to approved transaction types.
Common name | FaaS Field name | Example | Maximum Length |
Convenience Fee Rate | ConvenienceFeeRate | 3 (for 3%) |
|
Convenience Fee Fixed | ConvenienceFeeFixed | 1.50 (for $1.50) |
|
Postback
Postback method may be set to Post or Get for the authorization response.
Common name | FaaS Field name | Example | Maximum Length |
Postback | Postback | Post or Get |
|
Response description:- Get (default): Authorization code will post back to the Authorize URL.
- Post: All posted form values will be posted back in addition to the authorization, decline, and error messages.
ChargeDate
Common name | FaaS Field name | Example | Maximum Length |
Charge date YEAR | ChargeDateYear | 2013 | 4 |
Charge date MONTH | ChargeDateMonth | 10 | 2 |
Charge date DAY | ChargeDateDay | 25 | 2 |
Future date transactions are NOT supported for ACH/eCheck processing. The option is available only for credit card transactions.
The following special treatment is provided for convenience:
- Charge date Year: If YEAR is NOT passed the current YEAR will be assumed by default
- Charge date Month: If MONTH Is NOT passed the current MONTH will be assumed by default
A payment form may ask the patron to start her payment on a specific date, e.g. beginning of the month. In this case regardless of the day of the month that the payment is being initiated the payment will be charged on the first of the month. If the requested day is invalid (February 31) an error will be returned as invalid date so it is important that the form does not allow for invalid dates to be set for processing.
Please note:
Initiating a payment on the 31st of the month will set the payment to be processed on the first month that has 31 days.
Here are a few examples:
Example 1:
- Transaction date: January 2, 2013
- Request processing date: 1st of the month
- Transaction will process on February 1, 2013
Example 2:
- Transaction date: January 2, 2013
- Request processing date: 31st of the month
- Transaction will process on March 31, 2013
Example 3:
- Transaction date: January 2, 2013
- Request processing date: January 1
- Transaction will process on January 1, 2014
Example 4:
- Transaction date: January 2, 2013
- Request processing date: 3rd day of the month
- Transaction will process on January 3, 2013
Recommendation:
A typical scenario is when a donor wishes to start a recurring payment but wants the payment to be processed on the first of each month and continue every month, e.g. January 1, February 1, March 1, etc.
In such a case it is recommended that the only value that is passed be the ChargeDateDay and the rest not be posted. The following node needs to be added:
- <input name="ChargeDateDay" type="hidden" id="ChargeDateDay" value="1" />
If a pull down menu is to be provided for selecting the date it is strongly recommended that the pull down menu does not offer 29, 30, 31 as available days to avoid problems with such months as February, April, etc.
Double the Donation Corporation Matching Gift
Click & Pledge and Double the Donation have worked together to bring a comprehensive employer matching gift program to Click & Pledge customers. Through this implementation, forms designed through Click & Pledge's API and Connect platform will offer the employer identification field as part of the donation process. Matching Gift data is captured and available for customers through reports. Our integration works with Double the Donation's Premium Plan. To know more about the plan visit Double the Donations site: https://doublethedonation.com/pricing/
To sign up for Double the Donation and start incorporating matching gifts into Click & Pledge visit: https://doublethedonation.com/sign-up/
More information on how this works with our Salesforce App: https://support.clickandpledge.com/s/article/donor-management-with-salesforce--double-the-donation
To add DTD to a form add the following code to your site