### Installment Response Example Source: https://docs.findock.com/api/payment-api-v2/installment/installmentdetails Example JSON response from the Get Installment Details endpoint, showing the installment data fields including its status, amounts, payment processor, and associated Payment details. ```JSON { "Id": "a083X00001aUMCnQAO", "GUID": "sdfasdf-asfads-242134-adsfadf-23423", "Url": "/services/data/63.0/sobjects/cpm__Installment__c/a083X00001aUMCnQAO", "Type": "cpm__Installment__c", "Status": "Collected", "Amount": 10, "AmountOpen": 0, "Target": "PRIMARY-BANK-ACCOUNT", "RecordTypeName": "Receivable", "PayUrl": "https://link.dev.findock.com/pay/3xxxxmuai2/8897b4da-e48a-7ff3-90dd-ecb65094802c", "PayLinkPage": "pageAbcSlug", "PaymentProcessor": "PaymentHub-SEPA", "PaymentMethod": "DirectDebit", "PaymentIntentId": "pi_1hubybk7nh45rvbt6", "Payments": { "Id": "a0R3X00000V20tbUAB", "Url": "/services/data/v65.0/sobjects/cpm__Payment__c/a0R3X00000V20tbUAB", "Type": "cpm__Payment__c", "Target": "PRIMARY-BANK-ACCOUNT", "PaymentProcessor": "PaymentHub-SEPA", "PaymentMethod": "DirectDebit", "CollectionDate": "2025-02-03", "Amount": 25 } } ``` -------------------------------- ### Full response example for GET /PackageActions Source: https://docs.findock.com/api/payment-api-v2/package-actions/getpackageactions Example of the full response for the endpoint, including ResponseCode, IsSuccess, and PackageActions fields. ```json { "ResponseCode": "001", "IsSuccess": true, "PackageActions": [ { … } ] } ``` -------------------------------- ### Example response for GET /PackageActions (PackageActions array) Source: https://docs.findock.com/api/payment-api-v2/package-actions/getpackageactions Example of the response Body application/json showing the array of package actions. It contains the package name and its actions. ```json [ { "PackageName": "PaymentHub-GiftAid", "actions": [ … ] } ] ``` -------------------------------- ### GET /PaymentMethods - Response example Source: https://docs.findock.com/api/payment-api-v2/payment-methods/getpaymentmethods Example response body showing a PaymentMethods object with a Name and Processors array. ```json { "PaymentMethods": { "Name": "DirectDebit", "Processors": [ … ] } } ``` -------------------------------- ### Get recurring payment details - Response example Source: https://docs.findock.com/api/payment-api-v2/recurring Example response from the GET /Recurring/{ID} endpoint. It shows the full set of fields returned for a recurring payment, including the Salesforce URL, type, setup URL, payment processor, payment method, amount, currency, frequency, and dates. ```json { "Url": "/services/data/v65.0/sobjects/cpm__Recurring_Payment__c/a0V3X00000RKBZmUAP", "Type": "cpm__Recurring_Payment__c", "SetupUrl": "https://link.dev.findock.com/pay/3xxxxmuai2/8897b4da-e48a-7ff3-90dd-ecb65094802c", "PayLinkPage": "pageAbcSlug", "PaymentProcessor": "PaymentHub-SEPA", "PaymentMethod": "DirectDebit", "Id": "a0V3X00000RKBZmUAP", "GUID": "sdfasdf-asfads-242134-adsfadf-23423", "Amount": 25, "CurrencyISOCode": "EUR", "Frequency": "Monthly", "RecordTypeName": "Subscription", "StartDate": "2025-01-01", "EndDate": "2025-12-01", "Description": "Monthly subscription payment", "SourceConnector": "PaymentHub" } ``` -------------------------------- ### GET /Recurring response example Source: https://docs.findock.com/api/how-to-use-the-payment-api-v2 Example response from a GET request to the /Recurring endpoint. Fields that are empty are omitted. Use this to confirm the correct recurring record before posting an update. ```json { "Id": "a083X00001gpxeGQAQ", "GUID": "abcdefg-abcdef-12345-abcdefg-54321", "Url": "/services/data/36.0/sobjects/a083X00001gpxeGQAQ", "Type": "cpm__Recurring_Payment__c", "CurrencyISOCode": "EUR", "Amount": 10, "Frequency": "Monthly", "StartDate": "01-01-2025", "EndDate": "01-01-2026", "RecordTypeName": "DefaultReceivable", "SetupUrl": "", "Description": "Donation for XYZ", "SourceConnector": "PaymentHub" } ``` -------------------------------- ### Sample response for GetPaymentIntentOneTimeSuccessResponse Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentstatus Example response body showing the payment intent status and related installment details. The response includes the payment intent Id, status 'Matched', payer contact and account details, and installment information with a URL to the Installment object. ```json { "Id": "pi_1hubybk7nh45rvbt6", "Status": "Matched", "Payer": { "Contact": { … }, "Account": { … } }, "OneTime": { "Url": "/services/data/v65.0/sobjects/cpm__Installment__c/a083X00001aUMCnQAO", "Type": "cpm__Installment__c", "Id": "a083X00001aUMCnQAO", "Status": "Collected" } } ``` -------------------------------- ### SalesforceFields example Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentintent Example of the SalesforceFields object, used to pass fields and values on the Installment object in Salesforce. ```json { "cpm__Campaign__c": "a070Y000005M7t6", "cpm__Origin__c": "Online payment form" } ``` -------------------------------- ### Settings object with custom Guided Matching setup Source: https://docs.findock.com/api/how-to-use-the-payment-api-v2 For advanced use cases, you can override the default Guided Matching setup by specifying a custom Inbound Report subtype in the Settings object. This requires a custom Inbound Report subtype for the PaymentIntent report type and a configured Guided Matching setup for that subtype. ```json "Settings": { "ProcessingType": "CustomInboundReportSubTypeName" } ``` -------------------------------- ### GET /PaymentMethods response Source: https://docs.findock.com/api/getting-started-with-the-payment-api-v2 Example response from a GET request to /PaymentMethods with a bearer token. It shows available payment methods (CreditCard and Direct Debit) and their processors (PaymentHub-Stripe and PaymentHub-SEPA), including parameters that may be required in the /PaymentIntent request. ```json { "PaymentMethods": [ { "Processors": [ { "SupportsRecurring": true, "RecurringRequiresInitialPayment": false, "Parameters": [ { "Required": false, "Name": "locale", "Description": "Expected input: language tags as outlined on https://www.oracle.com/java/technologies/javase/jdk13locales.html. Examples: nl-NL, en-US.", "DataType": "String" } ], "Name": "PaymentHub-Stripe", "IsDefault": true } ], "Name": "CreditCard" }, { "Processors": [ { "Targets": [ { "publicTarget": "PaymentHub-SEPA", "Name": "SEPA-target" } ], "SupportsRecurring": true, "RecurringRequiresInitialPayment": false, "Parameters": [ { "Required": true, "Name": "iban", "Description": "The IBAN of the payer", "DataType": "String" }, { "Required": true, "Name": "holderName", "Description": "The holder name of the payer", "DataType": "String" }, { "Required": false, "Name": "bic", "Description": "Bank identification code of the payer's bank", "DataType": "String" } ], "Name": "PaymentHub-SEPA", "IsDefault": true } ], "Name": "Direct Debit" } ] } ``` -------------------------------- ### GET /SourceConnectors response Source: https://docs.findock.com/api/getting-started-with-the-payment-api-v2 Example response from a GET request to /SourceConnectors with a bearer token. It shows the configured source connectors, including FinDock for NPSP, GiftAid Source Package, and PaymentHub, with their default status. ```json { "SourceConnectors": [ { "PrettyName": "FinDock for NPSP", "Name": "PaymentHub-for-NPSP", "IsDefault": false }, { "PrettyName": "GiftAid Source Package", "Name": "GiftAid-Source", "IsDefault": false }, { "PrettyName": "PaymentHub", "Name": "PaymentHub", "IsDefault": true } ] } ``` -------------------------------- ### Response example Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentintent Example response from a successful API call, showing the Payment Intent Id, PaymentMethod details, Settings, and RedirectURL. ```json { "Id": "pi_1hubybk7nh45rvbt6", "PaymentMethod": { "Name": "CreditCard", "Processor": "PaymentHub-Stripe", "Target": "Stripe-Main", "Parameters": { … } }, "Settings": { "SourceConnector": "PaymentHub-for-NPSP" }, "RedirectURL": "https://redirect-hostdomain.com/checkout/payment-parameters" } ``` -------------------------------- ### PackageActions example Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentintent Example of the PackageActions object, showing package-specific actions such as CreateGiftAidDeclaration. ```json { "PaymentHub-GiftAid": { "CreateGiftAidDeclaration": { … } } } ``` -------------------------------- ### Automatic run for Standard ESR (QR-bill) Source: https://docs.findock.com/docs/payments/using-the-payment-request-generator Creates a Payment Request Generator Run record for standard ESR (QR-bill) references. Uses the ESRSFDCRecordIdReferenceGenerator and PaymentHub-CH-DD processor. The run starts automatically because the status is not set (defaults to New) but the record is inserted with status 'Generating'? Actually the status is not set, so it defaults to New; however, the example is for automatic run, so the status must be 'Generating' to start automatically. The source does not specify the status field, so it may rely on the default. The example uses a campaign source and maps the reference value to a custom field. ```apex cpm__Reference_Generator_Run__c run = new cpm__Reference_Generator_Run__c(     Name = 'ESR - Standard',    cpm__Reference_Type__c = 'ESR',    cpm__Generator_Type__c = 'ESRSFDCRecordIdReferenceGenerator',    cpm__Processor__c = 'PaymentHub-CH-DD',    cpm__Source_Type__c = 'campaign',    cpm__Campaign__c = c.Id,    cpm__Other_Input_fields__c = '{}',    cpm__Other_Output_Fields__c = '{\"reference-value\":\"My_Custom_Reference__c\"}', ); insert run; ``` -------------------------------- ### Full PaymentIntent JSON example Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentintent Complete example of a PaymentIntent request body, including all fields such as Payer, OneTime, Recurring, PaymentMethod, Settings, SalesforceFields, and PackageActions. ```json { "Id": "pi_1hubybk7nh45rvbt6", "Status": "Matched", "IdempotencyKey": "1hubybk7nh45rvbt6", "SuccessURL": "https://hostdomain.com/success", "FailureURL": "https://hostdomain.com/failure", "RedirectURL": "https://redirect-hostdomain.com/checkout/payment-parameters", "WebhookURL": "https://hostdomain.com/endpoint", "Origin": "Campaign payment form", "CampaignId": "7013X000001mAZbQAM", "Payer": { "Id": "0011j00000itNdlAAE", "RecordTypeName": "Household", "SalesforceFields": { … } }, "OneTime": { "Amount": 10, "CurrencyISOCode": "EUR", "Id": "a083X00001aUMCnQAO", "SalesforceFields": { … } }, "Recurring": { "Amount": 10, "Frequency": "Monthly", "CurrencyISOCode": "EUR", "StartDate": "2025-01-01", "EndDate": "2025-12-01", "Id": "a0V3X00000S7BuCUAV", "SalesforceFields": { … } }, "PaymentMethod": { "Name": "CreditCard", "Processor": "PaymentHub-Stripe", "Target": "Stripe-Main-Account", "Parameters": { … } }, "Settings": { "SourceConnector": "PaymentHub-for-NPSP", "ProcessingType": "CustomInboundReportSubType" }, "SalesforceFields": { "cpm__Campaign__c": "a070Y000005M7t6", "cpm__Origin__c": "Online payment form" }, "PackageActions": { "PaymentHub-GiftAid": { … } } } ``` -------------------------------- ### GET /SourceConnector - Response Body Source: https://docs.findock.com/api/payment-api-v2/source-connectors/getsourceconnectors Example response body showing the SourceConnectors array containing SourceConnector objects. The ellipsis indicates additional properties not shown. ```json { "SourceConnectors": [ { … } ] } ``` -------------------------------- ### Example of raw transaction data with movement and information records Source: https://docs.findock.com/docs/reconciliation/processing-coda-files Shows a sample of the Raw XML field on a Transaction record, containing movement records (starting with 2) and information records (starting with 3). The rows starting with 21, 22, 23 are movement records, and 31, 32 are information records. ```plaintext 21000100009876546498751245 00000001976111801912180015000007013X000001mAZbQAM/abcdefg 19121823801 0 2200010000 0000123456 KREDBEBB 1 0 2300010000BE12345687952177 EURJAN JANSEN 0 1 31000100019876546498751245 001500001001JAN JANSEN 1 0 3200010001JAARGETIJDENLAAN 150 B16 1050 BRUSSEL 0 0 ``` -------------------------------- ### APIv2: PaymentIntent request with CampaignId and Origin at root Source: https://docs.findock.com/release-notes/release-notes-november-20 Example PaymentIntent request body showing the new CampaignId and Origin fields at the root level. Values passed here are copied to Recurring and Installment objects regardless of source. ```json { "FailureURL": "https://example.com/failure", "SuccessURL": "https://example.com/success", "Payer": { "Contact": { "SalesforceFields": { "Email": "testpayment@findock.com", "FirstName": "Test", "LastName": "Payment" } } }, "PaymentMethod": { "Name": "CreditCard", "Parameters": { "locale": null } }, "Recurring": { "Amount": 15, "Frequency": "Monthly", "StartDate": "2020-10-14" }, "CampaignId":"7013X000001mAZbQAM", "Origin" : "Webform at findock.com", } ``` -------------------------------- ### POST Payment API callout with InitialPaymentonRecurring Source: https://docs.findock.com/release-notes/release-notes-july-23 Example API callout (POST) message showing the `InitialPaymentonRecurring` parameter set to Required. This is used for custom API integrations only, not FinDock Giving Pages or PayLinks. The parameter is returned by the `GET PaymentMethods` endpoint with values Required, Optional, or No. ```json { "Recurring": { "Amount": 10, "Frequency": "Monthly", "StartDate": "2023-01-01", "EndDate": "2024-01-01" }, "OneTime": { "Amount": 10 }, "SuccessURL": "https://www.example.com/success", "FailureURL": "https://www.example.com/failure", "Payer": { "Contact": { "SalesforceFields": { "FirstName": "First", "LastName": "Last", "Email": "first.last@email.address", } } }, "PaymentMethod": { "Name": "CreditCard" } } ``` -------------------------------- ### API v2: GET /PaymentMethods response for issuer parameter Source: https://docs.findock.com/release-notes/release-notes-november-20 Example response object for the iDEAL issuer parameter, showing the new structure with an Enum array containing image, label, and value for each option. This allows dynamic display of options to the payer. ```json { "Required": false, "Name": "issuer", "Enum": [ { "image": { "svg": "https://images.findock.com/issuers/abnamro/issuer.svg" }, "label": "ABN AMRO", "value": "abnamro" }, { "image": { "svg": "https://images.findock.com/issuers/asnbank/issuer.svg" }, "label": "ASN Bank", "value": "asnbank" } ], "Description": "The issueing bank. Use this parameter to skip the bank selection screen of the PSP and send the user directly to their bank's authorization environment.", "DataType": "Enum" } ``` -------------------------------- ### Example of a movement record starting with 21 Source: https://docs.findock.com/docs/reconciliation/processing-coda-files Shows the structure of a movement record with record identification 21, as described in the table. The fields are separated by pipes for readability. ```plaintext 2|1|0001|0000|2007211901244519 |0000000000506000|210720|00150000|0 |210720|198|0|1| |0| ``` -------------------------------- ### Pay Existing Installment - Response with RedirectURL Source: https://docs.findock.com/api/how-to-use-the-payment-api-v2 Example response body. If additional actions are required from the customer, a redirectURL is returned. After the transaction is completed or cancelled, the PSP notifies FinDock via a callback, and FinDock updates Salesforce data. ```json { "Settings": { "SourceConnector": "PaymentHub", "ProcessingType": "Default" }, "RedirectURL": "https://redirect.test.findock.com/3xnllmuai2/PaymentHub-Stripe/checkout?publicKey=pk_test_eGC6TxzQ60CdjpAkt2RG3CwZ008WiiOn12&sessionId=cs_test_l5JXe6THfn7e99Ip3OoGDf1SsT19fZrrsBvAhrmARWx6jU0QYi2EKS1Z", "PaymentMethod": { "Processor": "PaymentHub-Stripe", "Name": "CreditCard" }, "Id": "pi_2qha50n78o0qezuln" } ``` -------------------------------- ### Automatic run for Custom ESR (QR-bill) Source: https://docs.findock.com/docs/payments/using-the-payment-request-generator Creates a Payment Request Generator Run record for custom ESR (QR-bill) references using a custom base reference. Uses the ESRBaseReferenceReferenceGenerator and PaymentHub-CH-DD processor. Sets the status to 'Generating' to start the run automatically. The example uses a campaign source and maps the base reference and reference value to custom fields. ```apex cpm__Reference_Generator_Run__c run = new cpm__Reference_Generator_Run__c( Name = 'ESR - Bring Your Own Base Reference',   cpm__Reference_Type__c = 'ESR',  cpm__Generator_Type__c = 'ESRBaseReferenceReferenceGenerator',    cpm__Processor__c = 'PaymentHub-CH-DD',    cpm__Source_Type__c = 'campaign',    cpm__Campaign__c = c.Id,    cpm__Other_Input_fields__c = '{\"base-reference\":\"My_Custom_Base_Reference__c\"}',    cpm__Other_Output_Fields__c = '{\"reference-value\":\"My_Custom_Reference__c\"}',    cpm__Status__c = 'Generating' ); insert run; ``` -------------------------------- ### ARUDD ReturnedDebitItem XML Example Source: https://docs.findock.com/docs/reconciliation/processing-bacs-reports An example of an ARUDD entry showing the structure of a ReturnedDebitItem element used for matching. ```xml ``` -------------------------------- ### Recurring payment response example Source: https://docs.findock.com/api/how-to-use-the-payment-api-v2 Example response from a recurring payment request, including Settings, RedirectURL for authorization, PaymentMethod, and Id. ```json { "Settings": { "SourceConnector": "PaymentHub", "ProcessingType": "Default" }, "RedirectURL": "https://redirect.test.findock.com/3xnllmuai2/PaymentHub-Stripe/checkout?publicKey=pk_test_eGC6TxzQ60CdjpAkt2RG3CwZ008WiiOn12&sessionId=cs_test_FOnCWoRsNOVea8NBYMhOObAYvr7784jvKirv8mRkfxo0OxontIMduM6X", "PaymentMethod": { "Processor": "PaymentHub-Stripe", "Name": "CreditCard" }, "Id": "pi_1v0c50n728ke1inuu" } ``` -------------------------------- ### Ruleset hierarchy example Source: https://docs.findock.com/docs/payments/data-quality-requirements Shows the hierarchical structure of a ruleset: Processor, Process, Ruleset (Payment Method and Object), and Rules. ```text Processor (PaymentHub-SEPA) |_Process (Collection) |_ Ruleset = Payment Method (Direct Debit) AND Object (cpm__Installment__c) |_Rule 1 |_Rule 2 |_Rule 3 |_Rule x ``` -------------------------------- ### Rule type examples Source: https://docs.findock.com/docs/payments/data-quality-requirements Examples of rule type codes and their corresponding descriptions and errors. ```text REQUIRED ``` ```text MAXLENGTH ``` ```text EQ ``` ```text GT ``` ```text IN ``` ```text BOOL ``` ```text MATCHES ``` ```text TARGET ``` -------------------------------- ### Example DDICAdvice XML entry Source: https://docs.findock.com/docs/reconciliation/processing-bacs-reports Shows the structure of a DDIC advice report entry with fields used for matching and duplication protection. The SUReference, Amount, and DateOfDirectDebit are used to find the installment and compute the checksum. ```xml 2018091200X000000000 DDIC00000000000000 000000 XXXXX UK plc **XX00000000** 1 000000 00000000 MR X X XXXX 1 800 **2025-09-03** **200** ``` -------------------------------- ### Error Response Example Source: https://docs.findock.com/api/payment-api-v2/section/error-and-response-codes An example of the error response structure returned when the API call is unsuccessful. ```APIDOC ## Error Response Example ### Description Example of error response structure with error_code and error_message. ### Response #### Error Response Example ```json { "Errors": [ { "error_message": "Amount can't be 0 or negative", "error_code": "200" } ] } ``` ``` -------------------------------- ### GET /SourceConnector Source: https://docs.findock.com/api/payment-api-v2/source-connectors/getsourceconnectors Retrieves the configured source connectors in the Salesforce org. Requires full scope for Salesforce_Production or Salesforce_Sandbox. ```APIDOC ## GET /SourceConnector ### Description This endpoint returns the configured source connectors in the Salesforce org. ### Method GET ### Endpoint /SourceConnector ### Parameters #### Query Parameters - **Payload** (string) - Required - Salesforce_Production ### Request Example ``` // No request payload ``` ### Response #### Success Response (200) - **SourceConnectors** (array of SourceConnector) - List of source connectors #### Response Example ```json { "SourceConnectors": [ { … } ] } ``` ### Error Responses - **400** - Bad Request - **422** - Unprocessable Entity - **500** - Internal Server Error ``` -------------------------------- ### GET /PaymentMethods Source: https://docs.findock.com/api/payment-api-v2/payment-methods/getpaymentmethods Retrieves the complete list of activated payment methods and their configured processors. No request payload is required. ```APIDOC ## GET /PaymentMethods ### Description Returns a complete list of activated payment methods in the Salesforce org and the payment processors configured to process those methods. ### Method GET ### Endpoint /PaymentMethods ### Security Salesforce_Production (Required scopes: full) or Salesforce_Sandbox (Required scopes: full) ### Parameters #### Request Body No request payload. ### Request Example ``` // No request payload ``` ### Response #### Success Response (200) API was called successfully. Body: application/json PaymentMethods object with 2 properties. #### Response Example ```json { "PaymentMethods": { "Name": "DirectDebit", "Processors": [ … ] } } ``` ### Error Responses - 400 - 422 - 500 ``` -------------------------------- ### One-time gift with tribute Source: https://docs.findock.com/docs/source-connectors/configuring-findock-for-fundraising Example of creating a one-time gift payment intent with a tribute action. ```APIDOC ## FinDock Payment API - One-time gift with tribute ### Description Creates a one-time gift payment intent that includes a tribute action. ### Method POST ### Endpoint FinDock Payment API ### Parameters #### Request Body - **SuccessURL** (string) - Required - URL to redirect on successful payment. - **FailureURL** (string) - Required - URL to redirect on failed payment. - **Payer.Account.RecordTypeName** (string) - Required - Set to "PersonAccount". - **Payer.Account.SalesforceFields.FirstName** (string) - Required - Donor's first name. - **Payer.Account.SalesforceFields.LastName** (string) - Required - Donor's last name. - **Payer.Account.SalesforceFields.PersonEmail** (string) - Required - Donor's email address. - **OneTime.Amount** (string) - Required - Gift amount. - **PaymentMethod.Name** (string) - Required - Payment method name, e.g., "Creditcard". - **PaymentMethod.Processor** (string) - Required - Payment processor, e.g., "PaymentHub-Stripe". - **Settings.SourceConnector** (string) - Required - Set to "FinDock-for-Fundraising". - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.type** (string) - Required - Tribute type, e.g., "memorial". - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.honoreeName** (string) - Required - Name of the honoree. - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.notificationChannel** (string) - Required - Notification channel, e.g., "email". - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.notificationContactName** (string) - Required - Name of the notification contact. - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.notificationEmail** (string) - Required - Email for notification. - **PackageActions.FinDock-for-Fundraising.CreateGiftTribute.notificationMessage** (string) - Required - Message for notification. ### Request Example ```json { "SuccessURL": "https://www.example.com/success", "FailureURL": "https://www.example.com/error", "Payer": { "Account": { "RecordTypeName": "PersonAccount", "SalesforceFields": { "FirstName": "Test", "LastName": "Payer", "PersonEmail": "testpayer@findock.com" } } }, "OneTime": { "Amount": "50" }, "PaymentMethod": { "Name": "Creditcard", "Processor": "PaymentHub-Stripe" }, "Settings": { "SourceConnector": "FinDock-for-Fundraising" }, "PackageActions": { "FinDock-for-Fundraising": { "CreateGiftTribute": { "type": "memorial", "honoreeName": "Tribute Honoree", "notificationChannel": "email", "notificationContactName": "Tribute Recipient", "notificationEmail": "tribute@example.com", "notificationMessage": "Thank you for your tribute!" } } } } ``` ### Response No response schema is documented in the source. ``` -------------------------------- ### OneTime with SalesforceFields Source: https://docs.findock.com/api/payment-api-v2/section/working-with-payer-details Shows how to pass custom fields for a custom FinDock object like Installment using the OneTime object. SalesforceFields in OneTime are copied to the Installment record in Salesforce. ```json { "OneTime":{ "Amount": 10.0, "SalesforceFields": { "Sales_Invoice__c": "a506E0000009TfL" } } } ``` -------------------------------- ### POST /PaymentIntent Source: https://docs.findock.com/api/how-to-use-the-payment-api-v2 Pays an existing installment. The request must include an authorization header and a body with the installment Id in the OneTime object. No Payer object is required. ```APIDOC ## POST /PaymentIntent ### Description Pays an existing installment. The installment must have an open amount not equal to zero. The request body is similar to a new one-time payment but includes an installment Id in the OneTime object and does not require a Payer object. ### Method POST ### Endpoint /PaymentIntent ### Parameters #### Request Body - **SuccessURL** (string) - Required - The URL to redirect to on successful payment. - **FailureURL** (string) - Required - The URL to redirect to on failed payment. - **OneTime** (object) - Required - Contains the installment Id. - **Id** (string) - Required - The Id of the installment to pay. - **PaymentMethod** (object) - Required - The payment method details. - **Name** (string) - Required - The name of the payment method (e.g., CreditCard). - **Processor** (string) - Required - The payment processor (e.g., PaymentHub-Stripe). - **Settings** (object) - Required - Additional settings. - **SourceConnector** (string) - Required - The source connector (e.g., PaymentHub). ### Request Example { "SuccessURL": "https://www.example.com/success", "FailureURL": "https://www.example.com/error", "OneTime":{ "Id":"a083X00001gpxeGQAQ" }, "PaymentMethod": { "Name": "CreditCard", "Processor": "PaymentHub-Stripe" }, "Settings": { "SourceConnector": "PaymentHub" } } ### Response #### Success Response (200) - **Settings** (object) - Contains processing settings. - **SourceConnector** (string) - The source connector. - **ProcessingType** (string) - The processing type. - **RedirectURL** (string) - The URL for additional customer actions if required. - **PaymentMethod** (object) - The payment method used. - **Processor** (string) - The payment processor. - **Name** (string) - The payment method name. - **Id** (string) - The payment intent Id. #### Response Example { "Settings": { "SourceConnector": "PaymentHub", "ProcessingType": "Default" }, "RedirectURL": "https://redirect.test.findock.com/3xnllmuai2/PaymentHub-Stripe/checkout?publicKey=pk_test_eGC6TxzQ60CdjpAkt2RG3CwZ008WiiOn12&sessionId=cs_test_l5JXe6THfn7e99Ip3OoGDf1SsT19fZrrsBvAhrmARWx6jU0QYi2EKS1Z", "PaymentMethod": { "Processor": "PaymentHub-Stripe", "Name": "CreditCard" }, "Id": "pi_2qha50n78o0qezuln" } ``` -------------------------------- ### AUDDIS mandate matching example Source: https://docs.findock.com/docs/reconciliation/processing-bacs-reports Example of an AUDDIS mandate matching message. The reference attribute is matched against cpm__Mandate__c.cpm__Mandate_ID__c, and the checksum for duplication protection is built from reference, reason-code, and aosn. ```xml ``` -------------------------------- ### Guided Matching error JSON Source: https://docs.findock.com/docs/source-connectors/npsp-faqs Example error information from a failed Inbound Report record, showing the empty mapping direction and object source. The object is Installment and the mapping direction is from Installment to Opportunity. ```json "exception": "unexpected token: 'from'", "status": "failed", "fieldName": "cpm__Installment__c", "ruleType": "forwardToSource", "ruleName": "Manage Source" ``` -------------------------------- ### GET /Installment/{ID} Source: https://docs.findock.com/api/payment-api-v2/installment/installmentdetails Retrieves detailed information of an Installment record in Salesforce, including status and related Payment records. The ID path parameter specifies the record Id or GUID of the installment to query. ```APIDOC ## GET /Installment/{ID} ### Description This endpoint returns detailed information of an Installment record in Salesforce, including status and related Payment records. ### Method GET ### Endpoint /Installment/{ID} ### Parameters #### Path Parameters - **ID** (string) - Required - The record Id or GUID of the installment to query. Example: a083X00001aUMCnQAO ### Request Example // No request payload ### Response #### Success Response (200) - **Id** (string) - The Salesforce record Id of the installment. Example: "a083X00001aUMCnQAO" - **GUID** (string) - The Salesforce GUID of the installment. Example: "sdfasdf-asfads-242134-adsfadf-23423" - **Url** (string) - The Salesforce URL of the installment. Example: "/services/data/63.0/sobjects/cpm__Installment__c/a083X00001aUMCnQAO" - **Type** (string) - The Salesforce object type. Example: "cpm__Installment__c" - **Status** (string) - The status of the installment. For more information, see installment status and counters. Enum: "Cancelled", "Collected", "Failed", "New", "Outstanding", "Paid", "Pending", "Partially paid", "Pending Processing", "Pending recollection", +3 more. Example: "Collected" - **Amount** (number) - The original amount to be collected. Example: 10 - **AmountOpen** (number) - The amount still to be collected, i.e. original amount minus any already paid amounts. Example: 0 - **Target** (any) - The name of the target, a bank account or PSP merchant account, specified for the installment. Example: "PRIMARY-BANK-ACCOUNT" - **RecordTypeName** (string) - The record type of the installment for incoming payment and Payable for outgoing payments. Example: "Receivable" - **PayUrl** (string) - URL that can be used to pay this installment. This can be a PayLinks or Tikkie URL. Example: "https://link.dev.findock.com/pay/3xxxxmuai2/8897b4da-e48a-7ff3-90dd-ecb65094802c" - **PayLinkPage** (string) - The slug for the PayLink URL if multiple PayLinks pages are configured in the org. Example: "pageAbcSlug" - **PaymentProcessor** (any) - The name of the payment processor package used to process the installment. Example: "PaymentHub-SEPA" - **PaymentMethod** (any) - The name of the payment method used by the installment. Example: "DirectDebit" - **PaymentIntentId** (any) - The Id of the payment intent that created the installment. Example: "pi_1hubybk7nh45rvbt6" - **Payments** (object) - A cash movement related to an installment in Salesforce. (See response example for properties) #### Response Example { "Id": "a083X00001aUMCnQAO", "GUID": "sdfasdf-asfads-242134-adsfadf-23423", "Url": "/services/data/63.0/sobjects/cpm__Installment__c/a083X00001aUMCnQAO", "Type": "cpm__Installment__c", "Status": "Collected", "Amount": 10, "AmountOpen": 0, "Target": "PRIMARY-BANK-ACCOUNT", "RecordTypeName": "Receivable", "PayUrl": "https://link.dev.findock.com/pay/3xxxxmuai2/8897b4da-e48a-7ff3-90dd-ecb65094802c", "PayLinkPage": "pageAbcSlug", "PaymentProcessor": "PaymentHub-SEPA", "PaymentMethod": "DirectDebit", "PaymentIntentId": "pi_1hubybk7nh45rvbt6", "Payments": { "Id": "a0R3X00000V20tbUAB", "Url": "/services/data/v65.0/sobjects/cpm__Payment__c/a0R3X00000V20tbUAB", "Type": "cpm__Payment__c", "Target": "PRIMARY-BANK-ACCOUNT", "PaymentProcessor": "PaymentHub-SEPA", "PaymentMethod": "DirectDebit", "CollectionDate": "2025-02-03", "Amount": 25 } } ``` -------------------------------- ### Call FinDock refund action from Apex (MyRefundService) Source: https://docs.findock.com/docs/payments/integrating-refunds-from-salesforce Wraps the FinDock packaged refund action `cpm.RefundPaymentAction.execute(...)` in a service class. Use this when you need to initiate refunds from Apex as part of a larger process. The action supports one refund request at a time; `idempotencyKey` is optional but recommended to prevent duplicates. The running user must have permission to initiate refunds. ```apex public with sharing class MyRefundService { public static RefundResult initiateRefund( Id paymentId, Decimal amount, String reason, String idempotencyKey) { cpm.RefundPaymentAction.RefundRequest request = new cpm.RefundPaymentAction.RefundRequest(); request.paymentId = paymentId; request.amount = amount; request.reason = reason; request.idempotencyKey = idempotencyKey; cpm.RefundPaymentAction.RefundResponse response = cpm.RefundPaymentAction.execute( new List { request } )[0]; RefundResult result = new RefundResult(); result.success = response.isSuccess; result.errorMessage = response.errorMessage; result.refundReference = response.refundReference; return result; } public class RefundResult { public Boolean success; public String errorMessage; public String refundReference; } } ``` -------------------------------- ### CODA fixed-width file structure example Source: https://docs.findock.com/docs/reconciliation/processing-coda-files Shows the fixed-width column layout of a CODA file row. Each column has a fixed width, and the row length is constant, unlike CSV or Excel files. ```text ID(10) Name(15) Address(25) Amount(7) ``` -------------------------------- ### GET /PaymentIntent/{ID} Source: https://docs.findock.com/api/payment-api-v2/payment-intent/paymentstatus Gets the status of the inbound report of a payment intent along with information about the related installment or recurring payment. ```APIDOC ## GET /PaymentIntent/{ID} ### Description Use this operation to get the status of the inbound report of a payment intent along with information about the related installment or recurring payment (Recurring Payment, Gift Commitment or Recurring Donation object record). To get details of the related records themselves, use the /Installment and /Recurring endpoints. ### Method GET ### Endpoint /PaymentIntent/{ID} ### Parameters #### Path Parameters - **ID** (string) - Required - The Id of the payment intent to check. Example: pi_1hubybk7nh45rvbt6 ### Request Example // No request payload ### Response #### Success Response (200) API was called successfully. Body: application/json One of: GetPaymentIntentOneTimeSuccessResponse, GetPaymentIntentRecurringSuccessResponse - **Id** (string) - Payment intent Id from the inbound report. Example: "pi_1hubybk7nh45rvbt6" - **Status** (string) - Current status of the payment intent inbound report. Example: "Matched" - **Payer** (object) - Contact and/or Account record details for the payer that can be used for followup actions. (Show 2 properties) - **OneTime** (object) - Details about the installment related to the payment intent inbound report. (Show 4 properties) #### Response Example ```json { "Id": "pi_1hubybk7nh45rvbt6", "Status": "Matched", "Payer": { "Contact": { … }, "Account": { … } }, "OneTime": { "Url": "/services/data/v65.0/sobjects/cpm__Installment__c/a083X00001aUMCnQAO", "Type": "cpm__Installment__c", "Id": "a083X00001aUMCnQAO", "Status": "Collected" } } ``` ### Security Salesforce_Production (Required scopes: full) or Salesforce_Sandbox (Required scopes: full) ### Error Responses - 400: Bad Request - 422: Unprocessable Entity - 500: Internal Server Error ``` -------------------------------- ### Person Account field notation example Source: https://docs.findock.com/api/payment-api-v2/section/working-with-payer-details Shows how to pass standard and custom Account and Contact fields for Person Accounts. Standard Contact fields (except FirstName, LastName, Salutation) are prefixed with 'Person', custom Contact fields use '__pc', and custom Account fields use '__c'. ```json { "Account":{ "RecordTypeName": "person-account-record-type", "SalesforceFields":{ "FirstName": "John", "LastName": "Payer", "PersonEmail": "test@findock.com", "BillingStreet": "Any Street", "Custom_account_field__c": "Apartment Name", "Custom_contact_field__pc": "Middle Name" } } } ``` -------------------------------- ### Additional SOQL with INSTALLMENT prefix for Gift Aid payment schedule Source: https://docs.findock.com/docs/source-connectors/advanced-gift-aid-options In the Additional SOQL field of a Gift Aid payment schedule, prefix every Installment field with "INSTALLMENT." because the SOQL is applied to two queries: one for non-GiftAid installments and one for Gift Aid installments. ```soql and INSTALLMENT.cpm__Amount__c > 100 and INSTALLMENT.cpm__Payment_Method__c = 'PayPal' ```