# Payment terminal



**What everyone needs to know**[**​**](https://info.juicebox.money/dev/learn/risks/#what-everyone-needs-to-know)

* A project can be configured to use any contract that adheres to `ISNOWPaymentTerminal` to manage its inflows and outflows of token funds.
* Each payment terminal can have a unique distribution limit and overflow allowance.
* Each payment terminal can behave differently when it receives payments.

**What you'll want to know if you're building**[**​**](https://info.juicebox.money/dev/learn/risks/#what-youll-want-to-know-if-youre-building)

* A project can set its terminals using`SNOWDirectory.setTerminalsOf(...)`.
* If a project uses multiple terminals to manage funds for the same token, it can set the primary one (where other Web3 contracts should send funds to) using `SNOWDirectory.setPrimaryTerminalOf(...)`.
* To pay a project with a certain token, get its prefered payment terminal using `SNOWDirectory.primaryTerminalOf(...)`. If no terminal is returned, the project is not currently accepting the specified token.
