opencollective
opencollective copied to clipboard
[PROJECT] Financial Contributions between Hosts
Related: https://github.com/opencollective/opencollective/issues/2017
User Story
- François is Core Contributor of "Acme", a Collective hosted by the "Open Source Collective"
- The current balance of Acme is 1000$
- Covid Responders is a Collective hosted by the Open Collective Foundation
- We're the 4th of the month, on behalf of Acme, François is setting a $100 / month contribution to Covid Responders
How to account that ?
Collective Type From Host
Acme -> DEBIT -> Covid (Open Source) In Credit Card transactions the Debit entry usually doesn't have an Host
Covid <- CREDIT <- Acme (Foundation)
Problem: the money has not really moved
- The $100 are still on the Open Source Collective account.
- Open Source Collective need to wire the money to the Open Collective Foundation.
How to acknowledge that properly?
We can simply immediately acknowledge that foundation doesn't have the money yet with the following entry.
Collective Type From Host
Foundation -> DEBIT -> Open Source (Foundation) CollectiveId = HostCollectiveId
Open Source <- CREDIT <- Foundation (Open Source) CollectiveId = HostCollectiveId
The title could be "Owed by Open Source to Foundation" and part of the same TransactionGroup
.
How do we get the money back to foundation at the end?
Open Source -> DEBIT -> Foundation (Open Source) CollectiveId = HostCollectiveId
Foundation <- CREDIT <- Open Source (Foundation) CollectiveId = HostCollectiveId
This can be settled by an Immediate, Daily, Monthly or Weekly order. If not immediate, we can batch with others.
The title could be "Settle Balance with Host".
- a) We could trigger an automated Transferwise payment (if available)
- b) We can also create an Expense that needs to be paid by the Host owing the money.
For that to happen:
- Open Source needs to have Transferwise setup as Connected Account in "Sending Money".
- Foundation needs to have their Bank Account setup in "Receiving Money".
MVP
- Limited to same currency transactions
Just checking - why the limitation of the same currency? Doesn't Transferwise automatically deal with currency conversions? Is it because we can't guess the exchange rate exactly at the time of the creation of the transaction?
Another user story: Fiscal Host paying their fee to Open Collective Inc direct from the fiscal host's budget to the OCinc Collective, instead of going through a credit card.
why the limitation of the same currency?
I would like to avoid some complexities related to exchange rates and conversions in a first version. Once it's working, we can work on multi-currency transactions.
Note that by design a transaction should only be recorded when money actually moved. If the money hasn't moved yet, then an expense or a donation with status pending should be recorded.
We could break this down in two main cases:
1- the user is an admin of the source host In that case, we can assume that they can make a wire transfer from the host to the destination host. The donation becomes a classic "donate by wire transfer". This seems easy to implement because it's pretty much already implemented. The only difference is that instead of recording the donation with status ERROR and then showing the error message on the front end that donations to collectives on other hosts are not allowed, we record the donation as "PENDING". This would already solve a lot of issues (because a collective can always ask one of the admins of the host to do it for them)
2- the user is not an admin of the source host In that case, we need a way to let the host know that they have to make a wire transfer. In order to reuse what's already developed, it seems that automatically filing an expense would do the trick (such expense would be submitted to the source collective on behalf of the destination collective). The host can then proceed with their usual flow of going through approved expenses and pay them. They just need to make a wire transfer to the bank account of the host of the destination collective.
+1 on restricting this to a single currency as a simplification for a v1.
On the incoming side it should create a pending order, on the outgoing side it should create an expense. I think this is what was already said but I wasn't sure.
With our current work on the Ledger, we're now tracking the money owed between different accounts and their settlement status. The design was based with "contributions across hosts" in mind and that will make it easier to implement it.
We'll be tracking precisely the money owed between Hosts and will be able to issue reconciliation Expenses when needed.
Just adding my voice to say it would be nice to have inter-host transfers. thanks.
This issue is causing a problem for Season of Docs right now, because they are trying to pay out to multiple Collectives across different hosts. For Collectives with a Fiscal Host, we can figure out a workaround where the expense payee is the Fiscal Host, then they can manually add funds when the payment goes through, but it's not clear how to manage this for self-hosted Collectives. The system will not let them select the Collective as the expense payee, but there's no host profile to select either.
I see this as more evidence that we should probably tackle this project.
This is pretty much a must-have for Season of Docs. They want to stick with OSC for next year, but not having this feature significantly complicates the process.
I've been doing a lot of admin uploading receipts for virtual card payments between Collectives in different hosts, so I'm uploading an OC receipt back to OC. It feels very redundant. Being able to directly contribute would be a lot better.
@znarf @piamancini @BenJam we're kicking off planning for Season of Docs 2022 with Google in about 3 weeks. Can we decide one way or another if we are going to be delivering this feature, and in what time frame? Because it will affect that planning process.
I'm personally enthusiastic about this project and happy to try to prioritize it and make it happen before the end of year 2021.
@znarf my meeting with Google about Season of Docs is next week. Can you please confirm if we can commit to this being ready by the end of 2021 and when you estimate it will be done? It impacts how we set up the programme with them.
@alanna The team is committed to deliver this feature in 2021. We will likely start the work next sprint.
Compliance point brought up by our auditors:
For OCF, we can't allow money to leave our bank account without going through our compliance checks, which we do via the expense process. We can't allow OCF Collectives to make contributions to outside entities without those checks, including contributions to a Collective in a different host. The same goes for Gift Collective, and to some extent OSC. This is also a key AML concern for any host (someone with a Collective under OSC could just set up their own host and contribute to it as a way to launder money through a nonprofit, for example).
So we'll need to think through how compliance checks work with cross-host transfers. The easiest way I can think of is to only allow it via expenses, which already have a built-in approval system. If we want to enable it for contributions we may need a similar two step process where the Collective admin makes the contribution but it doesn't go through until the host admin approves and pays it.
@znarf will this also enable gift cards to be used across any host?
we can't allow money to leave our bank account without going through our compliance checks
Money doesn't move until a Settlement expense is paid, so you'll have the ability to see what were the contributions before paying it. If a Contribution is problematic, we can think about a refund/revert process. Sure, we'll have to define more clearly those processes. Maybe we can start with something lightweight and see how it goes?
will this also enable gift cards to be used across any host?
Yes, it's a bit different but Gift Cards and Prepaid Cards contributions should be possible aside contributions with Balance.
The easiest way I can think of is to only allow it via expenses
I thought about it and cross-host expenses is a completely different feature than cross-host contributions with a different mechanism. There will be no debt and settlement here, expenses would be paid by bank transfer one by one.
So all cross-host contributions will be listed out on the settlement expense, and not paid until host admin approves, and we can reject any that are not allowed? Does that mean there will be up to a month delay between when the contribution is made and when it is paid?
Just so you know the limitations, OCF cannot give money to anything but another 501c3. OSC can only donate to another entity in certain situations (must be for the open source mission, probably has to be a non-profit). Gift Collective can only give to another NZ registered charity. Meanwhile, other hosts might have no such restrictions.
The need for Season of Docs is for cross-host expenses specifically, not contributions.
I'm wondering if we should actually focus on expenses, not contributions, if we need to prioritise one or the other.
I'd like to bring this issue to the fore again as I have a Fund (WWOOF) that's using a fund to manage their long-term contributions to Collectives.
They'd like to make a monthly contribution to Ember.js (hosted by Tilde Inc.) but the process does not allow them to. I dont think that #5100 would solve the issue for them (a pull action of the Collective filing an expense to them) so I think we need to solve this using pending contributions to be paid by admins when ready.
As a minimum we need to improve the messaging as the current flow does not inform the user why this is happening:
there are no payment methods supported, but there is a payment method that's avialaible to the user (their Fund/Collective's balance).
This is going to be a priority for Open Source Collective in the future as we move toward a more ecosystem-wise model of supporting one another.
Hi,
Just wondering if there is any progress on implementing this. I just went looking for this feature because I wanted to make a donation from our collective (https://opencollective.com/solidnetwork) to a group we encouraged to join Open Collective (https://opencollective.com/cork-student-housing-co-op). We are on different fiscal hosts too. I realised it is not so straight forward and found my way here from - https://docs.opencollective.com/help/financial-contributors/collective-to-collective/~/settings/Link
Anyway, just writing to say hi, I love the work you do and to let you know this is definitely a feature that collectives like ours would find valuable. Also features like this encourage and support cooperation and solidarity between collectives, so it is a good one for solidarity economy.
Best
@kevflanagan a workaround could be to submit an expense from Cork Student Housing Coop to Solid Network. I think it will allow it between hosts.
Thanks for the suggestion @alanna. It's a donation rather than a payment for services or expenses. Our collective made a decision to donate some of our funds to support this group of young cooperators (https://opencollective.com/cork-student-housing-co-op/projects/brighton-trip-fundraiser) they are on Open Collective Europe fiscal host and we are on All for Climate. When I click the Contribute option on the page it gives me options to contribute personally and then it also lists the possibility of contributing as an organisation but while I'm an admin, our collective is not listed among my organisations. Perhaps I'm missing something. I had assumed it would be possible to make contributions from one collective to another.
Also, I noticed another separate issue in the process. In my list of organisations there was one organisation that our collective made a donation to last month by bank transfer. I'm not sure why I'm listed as an admin of this organisation, because I'm not. Perhaps it was created in the process of making the payment? Thankfully we have a good working relationship with this group and I have contacted them and informed them about it. Should I just delete the organisation? https://opencollective.com/cultivate1
Yeah the workaround with an expense is a bit of a hack since contributions between hosts aren't yet supported. So it's not perfect but it's a way to get the money there for now if you want. I believe @znarf has been thinking for a long time how to enable this, but we're not there yet.
Hi @alanna, it worked. Thanks https://opencollective.com/cork-student-housing-co-op/projects/brighton-trip-fundraiser
@kevflanagan please send our support team a message about these concerns: https://opencollective.com/contact