Overview
Beneficiaries are the end-users your platform pays out to. To withdraw funds to one, you first register the beneficiary together with at least one payment instruction (PIX dict key, bank account, or crypto wallet). The payment instruction is reviewed asynchronously by Trace Finance — onlyAPPROVED instructions can be referenced by a withdrawal.
The beneficiary record itself has no status: it is created once and reused. Each payment instruction is reviewed individually.
Prerequisites
- An active account that will fund the eventual withdrawals.
- Valid authentication credentials.
- A webhook subscription for
BENEFICIARY_PAYMENT_INSTRUCTION_APPROVEDandBENEFICIARY_PAYMENT_INSTRUCTION_REJECTED(recommended — the review is asynchronous). - The entity data you collected during your own end-user KYC. See Beneficiary compliance for what Trace Finance reviews and what stays on your side.
Steps
1
Submit the beneficiary and first payment instruction
The request carries both the entity identity and the first payment instruction in one call. The entity fields are identity-equivalent to a KYC submission; the payment instruction is rail-specific.The response returns the beneficiary with its
id and the created paymentInstruction.id in PENDING_REVIEW status. A BENEFICIARY_PAYMENT_INSTRUCTION_CREATED webhook fires immediately.2
Track the review to APPROVED
The first payment instruction on a new beneficiary triggers the full compliance review described in Beneficiary compliance. The review resolves asynchronously — typically within seconds — to On
APPROVED or REJECTED, delivered as a BENEFICIARY_PAYMENT_INSTRUCTION_APPROVED or BENEFICIARY_PAYMENT_INSTRUCTION_REJECTED webhook.If you cannot subscribe to webhooks, poll the beneficiary endpoint until the instruction settles:REJECTED, the webhook payload includes a currentState.reason describing why. The instruction cannot be reused — fix the data and submit a new instruction (see next step), or register a new beneficiary if the entity data was wrong.To force a rejection in sandbox while you build your handler, see Testing in sandbox → Force a payment-instruction rejection — it shows the full request you send and the BENEFICIARY_PAYMENT_INSTRUCTION_REJECTED payload your handler will receive.3
Upload a custody attestation for crypto (when required)
A crypto payment instruction requires a custody attestation document to complete its compliance review. Attach it inline when creating the beneficiary, or upload it afterwards while the instruction is still under review. The endpoint is scoped to the payment instruction — its ID goes in the path. The document is uploaded as multipart: a JSON Trace Finance stores the file and forwards it to the compliance review. Once accepted, the crypto instruction can settle to
body part carrying the documentType, plus the binary file:APPROVED.4
Add more payment instructions (optional)
A beneficiary can hold multiple payment instructions across rails. Add another one without re-submitting the entity data:Subsequent instructions on the same beneficiary go through a reduced compliance check — the entity has already been screened, so only the new payment-instrument is verified.
What happens next
- Withdraw — use the
APPROVEDbeneficiary and payment instruction to send funds. - Beneficiary compliance — what Trace Finance reviews on each instruction and what remains your responsibility.
- Verify webhook signatures — confirm review-outcome webhooks came from Trace Finance.