Creating payments for constituents via API

I'm trying to pull in Stripe transactions into Tessitura via my own integration and can't seem to figure out what entity/resource to work with. I've tried "Contributions" as the only one that actually allows me to "Post" to, (which shows it only applies to some "interceptor" plugin only), and do not know how to get a sample payment to show up for a constituent... Any help would be great! Thanks in advance!

Parents
  • You may be looking for the web/cart resources. You can use the "AddContribution" method to post a contribution to the cart, use the "ApplyCashPayment" or "AddOnAccount" depending on how you want it to be reflected in Tessitura, and then the "checkout" method to actually post the information onto a given account.

    https://www.tessituranetwork.com/REST_v151/TessituraService/HELP/RESOURCES/CART.HTM

  • Thank you! Looking at these resources, I'm not seeing anywhere for me to provide a constituent id to apply the payment to... 

  • Sorry about the confusion. I'm not talking about the Account Id.  I'm trying to associate a payment record and have it show up on a CONSTITUENT record.  So I need to create a contribution record in Tessitura and have it show up on the constituent record so that we know that this constituent gave us $X on Y date.

  • When I'm saying account ID I mean the ID associated with a constituent record.

    There is no API call to simply associate payments with a bulk of constituent records. You have to use the API to actually make the financial transaction for each account. Each constituent record would need to be authenticated via username and password before those kinds of transactions can happen via the API.

    You can't just tie a payment to a constituent record. It has to be *for* something. An order or contribution for example.

    If you want to put a bulk of payments/contributions into Tessitura you'll probably want to use the contribution import utility.

  • I see. So each constituent record has a username/password that I have to login as via the api (i.e. create a session with), and then add to their cart etc?  I understand the payment has to be for something, and in this case they would all be contributions they made.  I didn't realize each constituent has a username/password... This is a bit bizarre to me that I would have to login as a constituent to add a contribution to that constituent's record via the API.  So basically we can't really import contributions into Tessitura via the API, because we will never know each constituent's credentials.  Does that sound right?

  • Hi Tunc,

    That sounds right based on what I've seen; hopefully this sort of thing will be addressed in a future release. This is one reason why we use a stored procedure to import contributions from Stripe.

    Thanks,
    David

  • Each record doesn't necessarily have a username and password, but that's how the API allows for taking payments for them. So if they didn't have one, it would need to be created.

    But yeah, in the end the API isn't meant for bulk importing of financial transactions. They've got a contribution import utility and order import utility for that.

    The API is more for supporting normal website functionality. There aren't a lot of reasons for bulk importing of contributions for the average website.

  • This is good to know.  We sell memberships for our retail store out of Shopify POS and are looking at starting a project to create a constituent in Tessitura and pass the contribution/payment info via the API.  Sounds like we might have to look into that username and password to make it work...

  • Since the user's password won't be available to you, there are other methods of authenticating a session that only require an email or username. Endpoints like

    https://www.tessituranetwork.com/REST_v151/TessituraService/HELP/API/POST_WEB_SESSION_SESSIONKEY_L_4.HTM

    and

    https://www.tessituranetwork.com/REST_v151/TessituraService/HELP/API/POST_WEB_SESSION_SESSIONKEY_L_7.HTM

    might be helpful. I know with the Guest Checkout endpoint, you can check the constituent Id on the session after authenticating. If a user under that email does not exist, the ConstituentId on the session will be 0.

    Following that, another consideration is if the patrons that made these donations event exist in Tessitura when you're importing them. If not, you'll probably need to create accounts for them using the registration endpoint. To me it seems unlikely that the scenario mentioned in the OP would be such a happy path that everyone who's made contributions in some system that is not Tessitura, would exist in Tessitura.

    Still, I'm not even certain going through a scripted "purchase path" using the WEB API to import data is the way to go about this. I'm not familiar with it, the import utilities mentioned earlier seem like the way to go. That, or a custom SQL process in Tessitura.

  • It really all just depends on what you're trying to do. If you're looking to create the contributions in Tessitura on the fly as they come in, the API is the way to go. If you're just worried about importing the data in bulk and you're not necessarily concerned about it being available immediately then setting up an import process is the way to go. 

    You can even set up a job to scan a network/FTP location and look for new files to import automatically. So rather than have the API do anything you can set up your application to create a data file, move it to an FTP location, and then let SQL Server/Tessitura take over from there.

    It just depends on the needs and how soon you need Tessitura to be updated with the transactions.

  • It's not so much that the transactions have to be realtime or near time synced, but that we would like to not have to do a manual process of using a utility to get the donations synced.  We would like to just have a batch job that syncs the donors and donations over to Tessitura via the API.

  • Gotcha. Unfortunately I don't think that really exists for the API out of the box but the link that Joe sent is probably good to look at. You might be able to log accounts in using those methods and then automate the checkout process one at a time. 

    Alternately, you can take steps to automate the import utility but it would not be via the API. Specifically you could write something to get the data you need, generate a text/data file, upload it to an FTP location, and then have the Tessitura import utility run on a schedule. Theoretically that should make it handsfree albeit a bit low-tech. 

    You can also write your own custom API call that you could potentially accomplish what you need with that. You could pass whatever parameters you wanted if you set something up yourself. 

Reply
  • Gotcha. Unfortunately I don't think that really exists for the API out of the box but the link that Joe sent is probably good to look at. You might be able to log accounts in using those methods and then automate the checkout process one at a time. 

    Alternately, you can take steps to automate the import utility but it would not be via the API. Specifically you could write something to get the data you need, generate a text/data file, upload it to an FTP location, and then have the Tessitura import utility run on a schedule. Theoretically that should make it handsfree albeit a bit low-tech. 

    You can also write your own custom API call that you could potentially accomplish what you need with that. You could pass whatever parameters you wanted if you set something up yourself. 

Children