Webhooks
Overview
Use webhooks to listen for specific events on the Productfy system. When an event occurs, a POST request with data is sent to the endpoint of the webhook.
Webhook Setup
Please see step 6 of our Getting Started implementation guide for more information.
Card Transaction
This webhook triggers when a card transaction event occurred. It covers all types of transactions, including declined transactions. You can use this webhook to trigger notifications to your customers about card activity. Note the decline reason codes in these webhooks are defined by our processor here.
Example request body:
{"id":"Pfy_WebhkEv-glC2hCn2","status":"I","createdTs":"2021-07-14T03:42:04.927Z","callbackUrl":"https://2e72d0c1cf38.ngrok.io/webhooks","triggerType":"PymtCard","eventPayload":{"type":"gpa.credit.authorization","state":"PENDING","amount":"2.2","reason": null,"merchant": {"name": "STARBUCKS."},"accountId":"Pfy_FinA-76EyO7sv963386l4","reasonCode": null,"ledgerImpact":"negative","gpaOrderState": "PENDING","paymentCardId":"Pfy_PymtCard-Q7nnQ0xtjAm89WL757Z6rQ","transactionId":"Pfy_FinTx-QT5RWtntI3b8M6pwtl0r""pendingBalance": 1694,"settledBalance": 4674,"availableBalance": 1694,"additionalInformation": null,"previousTransactionId": null},"triggeringEventTs":"2021-07-14T03:42:04.54Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if a card transaction occurred at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. PymtCard is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- type: The type of card event:
- authorization
- authorization.reversal
- authorization.advice
- authorization.clearing
- pindebit.authorization
- pindebit.authorization.clearing
- refund
- state: The transaction state sent to Productfy from the card processor. Allowable values are: PENDING, CLEARED, COMPLETION, DECLINED, ERROR, ALL
- amount: The amount of the transaction. For example, 2.2 represents $2.20.
- reason: The reason for a declined transaction (ex. timeout, insufficient funds, fraud score, etc.)
- merchant: The merchant that initiated the transaction
- accountId: The ID of the person’s financial account record in the Productfy system.
- reasonCode: A code related to the reason field
- ledgerImpact: This specifies whether the transaction is debiting or crediting the ledger. If ledgerImpact is positive then the resulting transaction is a credit, otherwise the transaction is a debit.
- gpaOrderState: A field passed to us from our processor
- paymentCardId: The unique ID of this payment card.
- transactionId: The unique ID of the transaction.
- pendingBalance: The pending balance of the virtual account at the time the transaction processed
- settledBalance: The settled balance of the virtual account at the time the transaction processed
- availableBalance: The available balance of the virtual account at the time the transaction processed
- additionalInformation: A field passed to us from our processor
- previousTransactionId: For a card authorization that has multiple clearing transactions (partial clearing) this will show the ID of previous clearing transactions
triggeringEventTs
Time that the triggering event occurred. For example, if a card transaction occurred at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
Account Linked
A third party financial account was successfully linked to a user.
Example request body:
{"id":"Pfy_WebhkEv-O489wicXm","status":"I","createdTs":"2021-06-14T19:05:52.011Z","callbackUrl":"https://2e72d0c1cf38.ngrok.io/webhooks","triggerType":"FinAccCreate","eventPayload":{"ownerId":"Pfy_O-URiW619xZ","accountId":"Pfy_FinA-1xLqzzQN9A7ZZzF0","organizationId":"Pfy_O-U1lW6XXZy","yodleeAccountId":"1243509","yodleeProviderAccountId":"1234567""yodleeRequestId":"iYyldR9JbKtOXomI0D4qxxILEMA="},"triggeringEventTs":"2021-06-14T19:05:32.877Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if an account was linked at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. FinAccCreate is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- ownerId: Unique ID of the account owner.
- accountId: The ID of the person’s financial account record in the Productfy system.
- organizationId: The ID of the organization that the person belongs to.
- yodleeAccountId: External ID from Yodlee for the person’s financial account in the Yodlee system.
- yodleeProviderAccountId: The ID of the financial institution that the person’s account belongs to.
- yodleeRequestId: The ID of the Yodlee request passed back to Productfy
triggeringEventTs
Time that the triggering event occurred. For example, if an account was linked at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
Statement Ready
This webhook triggers when a statement has been generated on one of your customers' accounts. Use this webhook to trigger a notification to your customer that their statement is available.
Example request body:
{"id":"Pfy_WebhkEv-3tmm7Vt9","status":"S","createdTs":"2022-02-01T08:43:18.927Z","callbackUrl":"https://2e72d0c1cf38.ngrok.io/webhooks","triggerType":"FinAccStmtCreate","eventPayload":{"accountId":"Pfy_FinA-hE5vKo8iIJ2OkBs5","statementId":"Pfy_AccStmt-5KKUQn8PiB48y6KcwR63Twy","effectiveStartTs":"2022-01-01T00:00:00.000Z","effectiveEndTs":"2022-01-31T00:00:00.000Z"},"triggeringEventTs":"2021-01-27T08:42:03.534Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS(“S”, “Success”),
- SENDING_IN_PROGRESS(“I”, “Sending In-Progress”),
- FAILED(“F”, “Failed”),
- NO_OP(“N”, “No-Op”)
createdTs
Time that the webhook message was sent to the client system. For example, if a statement was ready at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. FinAccStmtCreate is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- accountId: Unique ID of the account.
- statementId: Unique ID of the statement.
- effectiveStartTs: The first date of the statement cycle.
- effectiveEndTs: The last date of the statement cycle.
triggeringEventTs
Time that the triggering event occurred. For example, if a statement was ready at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
Account Transaction Download
A third party linked account has been refreshed with new transactions.
Example request body:
{"id":"Pfy_WebhkEv-a3K03309","status":"I","createdTs":"2021-07-14T09:23:18.777Z","callbackUrl":"https://2e72d0c1cf38.ngrok.io/webhooks","triggerType":"FinAccTxDwnld","eventPayload":{"ownerId":"Pfy_O-x2kfcPeK2","accountId":"Pfy_FinA-d3BS139XE6wxG2T4","organizationId":"Pfy_O-Kr8cxP1K2","yodleeAccountId":"103204781","yodleeProviderAccountId":"10340290"},"triggeringEventTs":"2021-07-14T09:22:43.351Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if a new transaction occurred at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. FinAccTxDwnld is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- ownerId: Unique ID of the account owner.
- accountId: The ID of the person’s financial account record in the Productfy system.
- organizationId: The ID of the organization that the person belongs to.
- yodleeAccountId: External ID from Yodlee for the person’s financial account in the Yodlee system.
- yodleeProviderAccountId: The ID of the financial institution that the person’s account belongs to.
triggeringEventTs
Time that the triggering event occurred. For example, if a new transaction occurred at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
KYC Status
A user’s Know Your Customer (KYC) status was updated. For example, when a new user is onboarded, the user must pass the Know Your Customer (KYC) regulatory requirements before they are allowed access to any financial institution. If Productfy’s internal rules are able to validate the user, then this webhook is triggered with the kycStatus of P.
Example request body:
{"id":"Pfy_WebhkEv-H5DbX748","status":"I","createdTs":"2021-07-09T09:15:28.858Z","callbackUrl":"https://2e72d0c1cf38.ngrok.io/webhooks","triggerType":"KycUpdate","eventPayload":{"personId":"Pfy_P-6wcqlYw6n","kycStatus":"F","kycDescription":"Automatically failed based on rule engine"},"triggeringEventTs":"2021-07-09T09:15:18.223Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your KYC status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. KycUpdate is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- personId: Unique ID of the person associated with this webhook event.
- kycStatus: One of:
- P - Passed automatically by the system’s rule engine.
- F - Failed automatically by the system’s rule engine.
- 1 - Passed manually by a Productfy admin.
- 0 - Failed manually by a Productfy admin.
- kycDescription: Description of the event.
triggeringEventTs
Time that the triggering event occurred. For example, if your KYC status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
KYB Status
A user’s Know Your Business (KYB) status was updated. The occurs when the executeKyb API is called on an Organization ID.
Example request body:
{"id":"Pfy_WebhkEv-0L67Fzk0","status":"I","eventPayload":{"cipResult":"1","organizationId":"Pfy_O-tV54gPYVr","cipResultDescription":"Admin passed the check"},"triggeringEventTs":"2022-12-21T10:11:29.992Z","createdTs":"2022-12-21T10:11:30.39Z","triggerType":"KybCipUpdate","callbackUrl":"https://test.com"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
eventPayload
The data specific to this webhook event:
- cipResult: The result of the identity validation on the business
- organizationId: The Productfy Organization ID that KYB was performed on
- cipResultDescription: The description of the cipResult field
triggeringEventTs
Time that the triggering event occurred. For example, if your KYB status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
createdTs
Time that the webhook message was sent to the client system. For example, if your KYC status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
triggerType
Type of trigger for this webhook event. KybCipUpdate is the trigger type for this webhook.
callbackUrl
The URL of the server listening for webhook events.
ACH Transfer Validation Failed
The ACH transfer request failed validation.
Example request body:
{"id":"Pfy_WebhkEv-kCNiN5RH","status":"I","createdTs":"2021-08-25T01:16:03.914Z","callbackUrl":"https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev""triggerType":"AchTrfVldtnFail","eventPayload":{"status":"VF","achTransferRequestId":"Pfy_AchReq-SA4JMOLKpEtF90R6SGr7Cf10"},"triggeringEventTs":"2021-08-25T01:16:00.258Z",}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer failed validation at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AchTrfVldtnFail is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- status: One of:
- VF (Validation Failed)
- VS (Validation Successful)
- SI (Submitted to Financial Institution)
- F (Failed)
- S (Successful)
- achTransferRequestId: Unique ID of the ACH transfer request.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer failed status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
ACH Transfer Passed Validation
The ACH transfer request passed validation.
Example request body:
{"id":"Pfy_WebhkEv-R34ZV4zC","status":"I",""createdTs":"2021-08-25T01:16:06.473Z","callbackUrl":"https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev""triggerType":"AchTrfVldtnSccss",eventPayload":{"status":"VS","achTransferRequestId":"Pfy_AchReq-XEtK7GMqZ7C6qIo8gJX1085a"},"triggeringEventTs":"2021-08-25T01:16:00.37Z",}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer passed validation at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AchTrfVldtnSccss is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- status: One of:
- VF (Validation Failed)
- VS (Validation Successful)
- SI (Submitted to Financial Institution)
- F (Failed)
- S (Successful)
- achTransferRequestId: Unique ID of the ACH transfer request.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer validation status changed at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
ACH Transfer Submitted To Financial Institution
The ACH transfer request was submitted to the financial institution for processing.
Example request body:
{"id":"Pfy_WebhkEv-7gdW0738","status":"I","createdTs":"2021-08-25T01:22:01.625Z","callbackUrl":"https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev""triggerType":"AchTrfSubmit","eventPayload":{"status":"SI","achTransferRequestId":"Pfy_AchReq-XEtK7GMqZ7C6qIo8gJX1085a"},"triggeringEventTs":"2021-08-25T01:22:00.452Z",}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer request was submitted at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AchTrfSubmit is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- status: One of:
- VF (Validation Failed)
- VS (Validation Successful)
- SI (Submitted to Financial Institution)
- F (Failed)
- S (Successful)
- achTransferRequestId: Unique ID of the ACH transfer request.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer request was submitted at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
ACH Transfer Failed
The ACH transfer request failed for a reason other than validation.
Example request body:
{"id":"Pfy_WebhkEv-D7virGkc","status":"I","createdTs":"2021-08-25T01:22:01.656Z","callbackUrl":"https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev""triggerType":"AchTrfFail","eventPayload":{"status":"F","achTransferRequestId":"Pfy_AchReq-7KJhvlFBL48uYYk1yy636BGc"},"triggeringEventTs":"2021-08-25T01:22:00.452Z",}
Potential Reasons for Failure
Return Reason | Description |
---|---|
Insufficient Funds | The available balance is not sufficient to cover the dollar value of the debit entry. |
Account Closed | Previously active account has been closed. |
No Account / Unable to Locate Account | Account number structure is valid, but doesn’t match the individual identified in the entry or is not an open account. |
Invalid Account Number | Account number structure is not valid. |
Unauthorized Debit to Consumer Account Using Corporate SEC Code | A debit entry was transmitted to a consumer account that was not authorized by the Receiver. |
Authorization Revoked by Customer | Consumer who previously authorized entries has revoked authorization with the Originator. |
Payment Stopped | The Receiver has requested the stop payment of a specific ACH debit entry. |
Uncollected Funds | Sufficient balance exists, but the value of uncollected items brings available balance below the amount of debit entry. |
Customer Advises Originator is Not Known to Receiver and/or Originator is Not Authorized by Receiver to Debit Receiver’s Account | Receiver has no relationship with the Originator or has not authorized the Originator to debit the account. |
Customer Advises Entry Not in Accordance with the Terms of the Authorization | The debit entry was inaccurate or improperly initiated. Other reasons include source document was ineligible, notice was not provided to the receive or amount was inaccurately obtained. |
Account Frozen | Funds are unavailable due to action by the RDFI or legal action. |
Non-Transaction Account | RDFI policies/regulations restrict activity to account. |
Corporate Customer Advises Not Authorized | Receiver has notified RDFI that corporate debit entry transmitted to a corporate account is not authorized. |
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer request failed at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AchTrfFail is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- status: One of:
- VF (Validation Failed)
- VS (Validation Successful)
- SI (Submitted to Financial Institution)
- F (Failed)
- S (Successful)
- achTransferRequestId: Unique ID of the ACH transfer request.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer request failed at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
ACH Transfer Successful
The ACH transfer request was marked successful.
Example request body:
{"id":"Pfy_WebhkEv-01LD896k","status":"I","createdTs":"2021-08-17T22:03:04.19Z","callbackUrl":"://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev>https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev""triggerType":"AchTrfSccss","eventPayload":{"status":"S","achTransferRequestId":"Pfy_AchReq-03BBLH719d2UOVK519z7BPnF"},"triggeringEventTs":"2021-08-17T22:03:00.155Z",}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AchTrfSccss is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- status: One of:
- VF (Validation Failed)
- VS (Validation Successful)
- SI (Submitted to Financial Institution)
- F (Failed)
- S (Successful)
- achTransferRequestId: Unique ID of the ACH transfer request.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer request succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
ACH Received
This webhook triggers when an ACH transaction is initiated at a third party bank and sent to the account/routing number provided with a Productfy virtual account (e.g. a direct deposit transaction).
Example request body:
{"id": "Pfy_WebhkEv-12345678","status": "S","eventPayload": {"amount": "0.045","senderName": "VENMO","description": "VERIFYBANK","ledgerEntryType": "Credit","financialTransactionId": "Pfy_FinTx-teStTrAN33"},"triggeringEventTs": "2022-06-27T21:02:08.744Z","createdTs": "2022-06-27T20:22:09.368Z","triggerType": "DrctDepFinTxCreate","callbackUrl": "https://testing.mydomain.com/webhook-endpoint"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
eventPayload
The data specific to this webhook event:
- amount: The amount of the ACH transaction received
- senderName: The name of the originator of the ACH transaction
- description: The description of the transaction (entered by the originating bank)
- ledgerEntryType: "Credit" refers to received ACH transactions that increase a virtual account balance. "Debit" refers to transactions that decrease a virtual account balance.
- financialTransactinoId: The ID of the virtual account transaction created as a result of this ACH
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. DrctDepFinTxCreate is the trigger type for this webhook.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer request succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
Incomplete Credit Card Application
This webhook can be used to fulfill the regulatory obligation of credit cards to send a notification to your customer informing them that their credit card application was denied due to being incomplete. This webhook triggers 7 days after a credit card application has been started but not finished. The start date/time of the credit card application is determined by the Initiate Credit Application API.
Example request body:
{"id": "Pfy_WebhkEv-12345678","status": "S","eventPayload": {"personId": "Pfy_P-f7KSAfZ98","personName": "Micky Mouse","applicationStart": "2022-10-25T23:28:28",},"triggeringEventTs": "2022-06-27T21:02:08.744Z","createdTs": "2022-06-27T20:22:09.368Z","triggerType": "IncmpltPymtCardApplcSubmit","callbackUrl": "https://testing.mydomain.com/webhook-endpoint"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
eventPayload
The data specific to this webhook event:
- personId: The Productfy person ID of the end user with the incomplete application
- personName: The name of the Productfy person ID with the incomplete application
- applicationStart: The date/time when the application was initiated by the end user
createdTs
Time that the webhook message was sent to the client system. For example, if your ACH transfer succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. DrctDepFinTxCreate is the trigger type for this webhook.
triggeringEventTs
Time that the triggering event occurred. For example, if your ACH transfer request succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.
Yodlee Balance Refresh
A third party Yodlee-linked account has been refreshed with updated account balance.
Example Request Body:
{"id":"Pfy_WebhkEv-1Rnl43E5","status":"I","createdTs":"2023-03-03T15:15:07.271Z","callbackUrl":"https://oue8gmkis0.execute-api.us-west-2.amazonaws.com/default/webhook-consumer-loc-dev"}"triggerType":"AccBalRfrshCmplt","eventPayload":{"refreshStatus":"SUCCESS","financialAccountId":"Pfy_FinA-Uwpqg3IAOfodF8GW","currentBalanceAmount":1600.0,"balanceRefreshTimestamp":"2023-03-03T15:14:06Z","currentSettledBalanceAmount":1600.0,"currentAvailableBalanceAmount":1500.0},"triggeringEventTs":"2023-03-03T15:13:16.801Z",}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
SUCCESS("S", "Success"),
SENDING_IN_PROGRESS("I", "Sending In-Progress"),
FAILED("F", "Failed"),
NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. AccBalRfrshCmplt is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
refreshStatus: one of:
SUCCESS
IN_PROGRESS
FAILED
financialAccountId: unique ID of the account
currentBalanceAmount: The balance in the account that is available at the beginning of the business day; it is equal to the ledger balance of the account.
balanceRefreshTimestamp: time that balance refresh occurred
currentSettledBalance: The balance in the account that has been settled
currentAvailableBalanceAmount: The balance in the account that is available for spending. For checking accounts with overdraft, the available balance may include overdraft amount, if the site adds overdraft balance to the available balance.
failedReason: The reason the account balance refresh failed.
triggeringEventTs
Time that the triggering event occurred.
Disbursement Status
This webhook is triggered for clients using our Disbursements product. There are two scenarios where this webhook triggers: 1.) When the Send Disbursement Notification API is called, 2.) When the Cancel Disbursement Request API is called. In both cases the webhook can be used to trigger an email notification to the customer informing of them of what happened.
Example request body:
{"id": "Pfy_WebhkEv-12345678","status": "S","createdTs": "2023-04-05T16:44:49.481Z","callbackUrl": "https://qa.api.p-latinum.com/webhooks/pfy","triggerType": "CnsmrDsbrs","eventPayload": {"token": "Pfy_Tk-DisReq:9MYnlyGg24n8xnIlawLCRlDUpVVOe5z6bBD","eventType": "CREATED","successful": true,"personEmail": "test@gmail.com","fundingAmount": 122,"disbursementId": "Pfy_CnsmrDsbrsReq-Mw80eerta78JW0h1MlqB8Q","personLastName": "Mouse","personFirstName": "Mickey","tokenExpirationTs": "2023-04-12T23:59:59.999999-07:00","tenantDeploymentEnvironmentId": "Pfy_TnntDeployEnv-o2Q5420WnXov"},"triggeringEventTs": "2023-04-05T16:44:49.359Z"}
The fields in the request body are described below:
id
The unique ID for this webhook event.
status
Status - can be one of the following:
- SUCCESS("S", "Success"),
- SENDING_IN_PROGRESS("I", "Sending In-Progress"),
- FAILED("F", "Failed"),
- NO_OP("N", "No-Op")
createdTs
Time that the webhook message was sent to the client system. For example, if the API succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:02pm is the createdTs.
callbackUrl
The URL of the server listening for webhook events.
triggerType
Type of trigger for this webhook event. CnsmrDsbrs is the trigger type for this webhook.
eventPayload
The data specific to this webhook event:
- token: This is unique security token generated by Productfy that must be used in the URL you direct customers to for access to their disbursement.
- eventType: Values are either CREATED or CANCELLED
- successful: True or false indicating whether there was missing data or an error on the Productfy side
- personEmail: Email address entered in the disbursement request
- fundingAmount: Funding amount entered in the disbursement request
- disbursementId: Disbursement ID of the disbursement that was previously created
- personLastName: Last name of the customer
- personFirstName: First name of the customer
- tokenExpirationTs: Date/time when the token expires (default is 7 days)
- tenantDeploymentEnvironmentId: client ID
triggeringEventTs
Time that the triggering event occurred. For example, if the API request succeeded at 12:00pm but the webhook did not get created until 12:02pm, then 12:00pm is the triggeringEventTs.