Overview
Many payment flows involve a counterparty who is not, and never will be, a customer of your FinTech. A customer might wire money to their landlord, or receive an ACH credit from a relative. Synctera refers to these counterparties generically as external payers and payees. This guide assumes:- The structure is payment-rail agnostic — it works the same whether the money movement is ACH or wire.
- The payer and payee are different people.
- The payee is not a customer of your FinTech.
- A person or business, created with
is_customer: false. This represents their identity for compliance and OFAC screening purposes, without putting them through KYC/KYB or giving them customer-level access. - An external account, created with a
verification.statusofUNVERIFIED. This represents their bank account at another institution.
- Reuses the existing Persons, Businesses, and External Accounts APIs — no special endpoint for creating a payee itself.
- Unverified accounts can only receive credits. To debit an external account (for example, to pull funds via ACH), the account must be verified. See the External Accounts guide for verification flows.
- The link between a payer and their payee can be modeled explicitly with a
PAYER_PAYEEparty relationship, so you don’t have to maintain that mapping entirely on your own side.
Prerequisites
This guide assumes you are familiar with: It also assumes you have already created the payer as a personal or business customer with an account. This guide covers only the payee side of the relationship. The curl examples authenticate with anapikey environment variable. Some examples depend on identifiers generated by previous steps; these are shown as placeholders like {PAYEE_ID}.
Adding a payee
1
Create the payee as a person or business
Create the payee with For a business payee, use POST /v2/businesses:Either call returns an
is_customer: false so they are represented on the platform without being treated as a customer. The more identifying information you provide, the better — it reduces the chance of an OFAC false positive later, and makes the payee easier to recognize if they are reused across multiple payers.For an individual payee, use POST /v2/persons:id (for a person, customer_id; for a business, business_id) that you use to link the payee’s external account in the next step.If the payee will receive a wire, collect at minimum a legal name and legal address — this is the minimum information needed to run an OFAC check without an unacceptable false-positive rate.
2
Add the payee's external account
Create an external account for the payee with POST /v2/external_accounts, passing the For a business payee, set
customer_id or business_id from the previous step. Because you have not independently verified that the payee owns this account, leave verification.status as UNVERIFIED and verification.vendor as MANUAL.Provide a routing number for every payment rail you intend to use — ach_routing_number for ACH, wire_routing_number for wires. Since this structure is rail-agnostic, a single external account can support both.customer_type to BUSINESS and pass the business_id from Step 1 instead of customer_id.The response returns the external account id, used as the destination (or source) account when originating ACH or wire payments:3
Link the payer and payee
Record the relationship between your customer (the payer) and the payee with a For a business payer or payee, use
PAYER_PAYEE party relationship, using POST /v2/relationships. Provide exactly one of from_person_id/from_business_id for the payer and one of to_person_id/to_business_id for the payee, plus additional_data.transfer_type to record which direction money is expected to move:from_business_id or to_business_id in place of the person fields. The response returns the relationship id:Managing payer–payee relationships
List a payer’s payees
Use GET /v2/relationships, filtering byfrom_person_id (or from_business_id) and relationship_type=PAYER_PAYEE, to retrieve every payee linked to a given payer:
Update a relationship
Change thetransfer_type (for example, if a payee that could only receive credits is later verified for debits) with PATCH /v2/relationships/{RELATIONSHIP_ID}:
Remove a relationship
Delete the link with DELETE /v2/relationships/{RELATIONSHIP_ID}. This removes the payer–payee association only; the underlying person/business and external account are unaffected.Best practices
- Collect as much payee information as possible — beyond the minimum required fields, additional details (address, date of birth, etc.) reduce the chance of an OFAC false positive, especially for wires.
- Always set
is_customer: falsefor payees who are not onboarding as customers, so they are not mistakenly treated as account holders. - Leave new accounts
UNVERIFIEDunless you have independently confirmed ownership — this also enforces that the account can only receive funds, not be debited. - Provide a routing number for every rail you support — a single external account can carry both
ach_routing_numberandwire_routing_number. - Reuse existing payees — if a payee already exists as a person or business on your platform, link to the existing record and account instead of creating duplicates.
- Use the
PAYER_PAYEErelationship to query payees — filter GET /v2/relationships byfrom_person_id/from_business_idinstead of building a separate mapping table.
Related guides
Create a Personal Customer
Create the originating payer customer.
Create a Business Customer
Create a business payee or payer.
External Accounts
Verify an external account to enable debits.
Domestic Wires
Send a wire to an external payee.

