Understanding FillFaster Form Payments
The Payment Feature allows you to integrate payment processing directly into your forms. Users can make payments through a secure checkout process without leaving your form, and the payment status is automatically tracked and validated.
Key Features
Section titled “Key Features”- Secure Payment Processing: Payments are processed through external payment gateways in secure iframes
- Form Integration: Payment status is integrated with form validation - required payments must succeed before form submission
- Dynamic Configuration: Payment settings can be configured statically in the form schema or dynamically via submission data
- Multiple Payment Fields: Support for multiple payment fields within a single form
How It Works
Section titled “How It Works”- Payment Button: When payment criteria are met, a payment button is displayed
- Dynamic URL Generation: Clicking the button calls the backend API to generate a unique checkout URL
- Secure Checkout: The checkout page opens in a popup iframe where users enter payment details
- Status Detection: The system monitors iframe URL changes to detect payment completion
- Form Validation: Payment status is integrated with form validation - failed required payments prevent form submission
Supported gateways
Section titled “Supported gateways”Form payments are integrated with external gateways. Currently supported:
| Gateway | gateway value (schema / config) |
|---|---|
| EasyCard | easycard |
Additional gateways may be added over time. check this page or FillFaster’s release notes when planning new payment flows.
Configuration Options
Section titled “Configuration Options”Static Configuration (Form Schema)
Section titled “Static Configuration (Form Schema)”Payment fields can be configured directly in the form schema with predefined settings:
{ "type": "payment", "key": "processing_fee", "label": "Processing Fee", "required": true, "validationType": "payment", "paymentType": "paymentIntent", "gateway": "easycard", "payload": { "currency": "ILS", "paymentRequestAmount": 10, "paymentIntent": true ..easycard paymentIntent regular payload }}Dynamic Configuration (Submission Data)
Section titled “Dynamic Configuration (Submission Data)”For more flexible payment processing, payment configurations can be provided dynamically in the submission data under the payment_configs section:
{ "form_id": "abc123", "inputs": { "user_name": "John Doe", "user_email": "john@example.com", "user_phone": "0501234567" }, ... "payment_configs": { "field_name": { "paymentType": "paymentIntent", "gateway": "easycard", "payload": { "currency": "ILS", "paymentRequestAmount": 10, "paymentIntent": true .. easycard paymentIntent regular payload } } }}Hybrid Configuration
Section titled “Hybrid Configuration”The system supports a hybrid approach where:
- Dynamic configurations (from
payment_configs) take precedence - Static configurations (from schema) serve as fallback defaults
- This allows for both simple predefined payments and complex dynamic payment flows
Field Configuration Properties
Section titled “Field Configuration Properties”Required Properties
Section titled “Required Properties”type: Must be"payment"key: Unique identifier for the payment fieldlabel: Display name for the payment fieldvalidationType: Must be"payment"
Optional Properties
Section titled “Optional Properties”required: Whether the payment is required for form submission (default:false)paymentType: Type of payment (e.g.,"paymentIntent")gateway: Payment gateway to use (e.g.,"easycard")payload: Payment configuration object
Payment Status Values
Section titled “Payment Status Values”The payment field can have the following status values:
"pending": Initial state, payment not yet attempted"success": Payment completed successfully"failed": Payment failed or was cancelled"missing_config": Payment configuration is missing (automatically set when required payment has no configuration)
Examples
Section titled “Examples”Example 1: Simple Required Payment
Section titled “Example 1: Simple Required Payment”Schema Configuration:
{ "type": "payment", "key": "registration_fee", "label": "Registration Fee", "required": true, "validationType": "payment", "paymentType": "paymentIntent", "gateway": "easycard", "payload": { "currency": "ILS", "paymentRequestAmount": 10, "paymentIntent": true .. easycard paymentIntent regular payload } }}Dynamic Configuration (overrides schema), sent under payment_configs in createSubmission link request: Documentation Link
Example 2: Dynamic Payment with Placeholders
Section titled “Example 2: Dynamic Payment with Placeholders”Dynamic Placeholder:
A text with {service_payment} placeholder
Dynamic Configuration (overrides schema), sent under payment_configs in createSubmission link request: Documentation Link
{ "form_id": "abc123", "inputs": { "user_name": "John Doe", "user_email": "john@example.com", "user_phone": "0501234567" }, ... "payment_configs": { "service_payment": { "paymentType": "paymentIntent", "gateway": "easycard", "payload": { "currency": "ILS", "paymentRequestAmount": 10, "paymentIntent": true .. easycard paymentIntent regular payload } } } }Security Considerations
Section titled “Security Considerations”- Secure Communication: Payment URLs are generated server-side
- Iframe Security: Checkout pages are loaded in sandboxed iframes
Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”- Payment button not showing: Check that all required configuration properties are present
- Payment URL generation fails: Verify the payload is aligned with the payment provider documentation.
- Form submission allowed despite failed payment: Ensure payment field is marked as
required: true,the default value is true.