New webhooks and powered-up PaymentMethod controls
Greetings, friends! Spring is upon us at last, and here at Routable, our spring cleaning project continues with new improvements to webhooks and PaymentMethods. Let's take a quick hop through the list!
New company.updated webhook
company.updated webhookWe've added, by popular request, a new webhook to the system: company.updated. A company.updated webhook event will be triggered when a Company 's legal name changes.
Powered-up PaymentMethods
PaymentMethodsDid we say one new webhook? We meant two.
A new payment_method.updated webhook event will fire when a PaymentMethod has its validation_status change, or when it is archived or unarchived.
Created vs. UpdatedNote that
payment_method.updatedis triggered when an existingPaymentMethodis updated. While colloquially, folks often refer to the act of adding a new bank account to a vendor as "updating their payment method", this actually results in the creation of a newPaymentMethodobject, which would triggerpayment_method.createdwebhook events instead.
Wait... PaymentMethods can be archived?!
Yes! Previously, if you wanted to archive a PaymentMethod you no longer wanted to use - perhaps because the bank account is no longer in use or a bank account validation check returned troubling information - you had to reach out to Routable's stellar success and support teams to facilitate it. No longer! Behold, the Archive a Payment Method endpoint! Now you can self-service this function programmatically, including as part of an automated strategy to address failed payments .
Of course, you might make a mistake, or just change your mind - so we've also provided a companion endpoint to restore an archived PaymentMethod .
Whodunnit?!A new boolean
is_archivedfield has been added toPaymentMethods. When aPaymentMethodis archived, its newarchived_byfield will either have a value ofsystem, meaning Routable's internal logic archived thePaymentMethoddue to unrecoverable issues with it, orteam_memberif a member of your team requested the archival using the new endpoint. OnlyPaymentMethodsthat werearchived_byateam_membercan be unarchived.
Hold on a second! Archived and invalid PaymentMethods don't show in the API!
PaymentMethods don't show in the API!They do now! By default, they'll still be filtered out, so your existing code doesn't need to change, but you can pass archival_status=system or archival_status=team_member to the List Payment Methods endpoint to see them. These updates will also, for the first time, give you the option to see PaymentMethods that are not valid to be used for transactions.
Speaking of the concept of valid, we've slightly tweaked the logic behind the is_valid field on PaymentMethods to make it a bit more all-encompassing. Essentially, if you see is_valid: true on a PaymentMethod now, you can be confident that Routable knows of no issues that would prevent it from successfully executing transactions.
Visibility on the verification process
Finally on the PaymentMethod object, we've exposed a new verification_status field. Unlike its cousin bank account validation , which does a deep dive into the bank account to help catch fraud, verification refers to the existing practice when vendors add their bank accounts via the Invite a Company workflow. In order to verify the bank account is theirs, they either connect to their bank via Plaid, or confirm micro-deposit amounts. When this step has been successfully completed, the newly-exposed verification_status field will show verified. You'll see pending if micro-deposits were sent but the vendor has yet to confirm them, and failed if that confirmation process was unsuccessful.
failedversusnot_verifiedWhen there is a failed verification (such as incorrect micro-deposit amounts entered during verification) you will see the
failedvalue inverification_status. Thenot_verifiedvalue, however, does not mean that there is a problem with thePaymentMethod. It means that either the verification has not started (which generally would only take a few seconds forPaymentMethodsadded through the Invite a Company workflow) or the bank account did not require validation at all because it was added by your team via the Create a Payment Method endpoint or the Routable Dashboard.The result of the verification (and the determination of whether it was needed in the first place) is part of what goes into the new
is_validlogic. You never need to explicitly checkverification_statusif your goal is to determine that aPaymentMethodis safe to use; ifis_valid = true, you can trust that any necessary validation has been successfully completed, thePaymentMethodis not archived, and other necessary criteria to enable payments to thatPaymentMethodare also met.
