Send a payout

Pay an approved sender's money to an active China counterparty with POST /send.

Your sender is approved. Your counterparty is active. Now pay.

This page shows one payment: a business buys goods from a Chinese supplier and pays in CNY from a Nigerian naira wallet.

Get a quote

A payout that converts a currency needs a quote. Send the reference of the quote in quoteReference. See Conversions.

A payout from a CNY wallet to CNY needs no quote.

Choose a processing mode

Every payment carries a processing mode. Send it in the payout request.

ModeWhen it settlesWhat it suits
NormalBusiness hours, Monday to Friday. Settlement is T+1.Planned payments, such as a supplier invoice or a payroll run.
InstantAny time, 24 hours a day, 7 days a week.Payments that cannot wait for the next business day, and weekend or holiday payments.

Both modes pay a business bank account and an individual bank account. The mode does not limit the account type.

The fee depends on the mode and on the counterparty type, so a business account on Instant and an individual account on Normal carry different fees. Ask your account manager for your rate card.

📘

A Friday payment on Normal settles on the next business day

Normal settles T+1 inside business hours from Monday to Friday. Choose Instant when the payment must leave on a weekend or a public holiday.

Send the payout

The three values below are fixed for every China payout.

FieldValue
destinationCurrencyCNY
paymentSchemecnaps
paymentDestinationbank_account
curl -X POST https://api.fincra.com/send \
  -H "api-key: $FINCRA_API_KEY" \
  -F "business=64a1f0c2e4b0a12345678901" \
  -F "sourceCurrency=NGN" \
  -F "destinationCurrency=CNY" \
  -F "amount=5000000" \
  -F "quoteReference=QTE-8842-XYZ" \
  -F "senderId=sndr_9f21c8a4b5d6e7f8" \
  -F "counterpartyId=cp_7a04b1c2d3e4f5a6b7c8d9e0" \
  -F "customerReference=PAY-2026-000123" \
  -F "paymentScheme=cnaps" \
  -F "paymentDestination=bank_account" \
  -F "purposeOfFund=goods_purchase" \
  -F "relationshipWithBeneficiary=supplier" \
  -F "description=Q3 electronics restock" \
  -F "additionalPayoutDetails[orders][0][orderedAt]=2026-07-20T10:30:00Z" \
  -F "additionalPayoutDetails[orders][0][item][name]=LED display panels" \
  -F "additionalPayoutDetails[orders][0][item][quantity]=250" \
  -F "additionalPayoutDetails[orders][0][platform][name]=Alibaba" \
  -F "additionalPayoutDetails[orders][0][platform][url]=https://hq-electronics.en.alibaba.com" \
  -F "files[0][documentType]=invoice" \
  -F "files[0][file][email protected]"
import { readFileSync } from "node:fs";

const form = new FormData();
form.append("business", "64a1f0c2e4b0a12345678901");
form.append("sourceCurrency", "NGN");
form.append("destinationCurrency", "CNY");
form.append("amount", "5000000");
form.append("quoteReference", "QTE-8842-XYZ");
form.append("senderId", "sndr_9f21c8a4b5d6e7f8");
form.append("counterpartyId", "cp_7a04b1c2d3e4f5a6b7c8d9e0");
form.append("customerReference", "PAY-2026-000123");
form.append("paymentScheme", "cnaps");
form.append("paymentDestination", "bank_account");
form.append("purposeOfFund", "goods_purchase");
form.append("relationshipWithBeneficiary", "supplier");
form.append("additionalPayoutDetails[orders][0][orderedAt]", "2026-07-20T10:30:00Z");
form.append("additionalPayoutDetails[orders][0][item][name]", "LED display panels");
form.append("additionalPayoutDetails[orders][0][item][quantity]", "250");
form.append("additionalPayoutDetails[orders][0][platform][name]", "Alibaba");
form.append("files[0][documentType]", "invoice");
form.append("files[0][file]", new Blob([readFileSync("invoice-8842.pdf")]), "invoice-8842.pdf");

const res = await fetch("https://api.fincra.com/send", {
  method: "POST",
  headers: { "api-key": process.env.FINCRA_API_KEY },
  body: form,
});
const payout = await res.json();
import os, requests

data = {
    "business": "64a1f0c2e4b0a12345678901",
    "sourceCurrency": "NGN",
    "destinationCurrency": "CNY",
    "amount": 5000000,
    "quoteReference": "QTE-8842-XYZ",
    "senderId": "sndr_9f21c8a4b5d6e7f8",
    "counterpartyId": "cp_7a04b1c2d3e4f5a6b7c8d9e0",
    "customerReference": "PAY-2026-000123",
    "paymentScheme": "cnaps",
    "paymentDestination": "bank_account",
    "purposeOfFund": "goods_purchase",
    "relationshipWithBeneficiary": "supplier",
    "additionalPayoutDetails[orders][0][orderedAt]": "2026-07-20T10:30:00Z",
    "additionalPayoutDetails[orders][0][item][name]": "LED display panels",
    "additionalPayoutDetails[orders][0][item][quantity]": 250,
    "additionalPayoutDetails[orders][0][platform][name]": "Alibaba",
    "files[0][documentType]": "invoice",
}

res = requests.post(
    "https://api.fincra.com/send",
    headers={"api-key": os.environ["FINCRA_API_KEY"]},
    data=data,
    files={"files[0][file]": open("invoice-8842.pdf", "rb")},
)
payout = res.json()
{
  "success": true,
  "message": "Payout initiated successfully.",
  "data": {
    "id": 90210,
    "reference": "PO-8f3a2c1d",
    "customerReference": "PAY-2026-000123",
    "status": "processing",
    "isDocumentRequired": false,
    "documentsRequired": [],
    "senderId": "sndr_9f21c8a4b5d6e7f8",
    "counterpartyId": "cp_7a04b1c2d3e4f5a6b7c8d9e0"
  }
}

Store the reference. You need it to upload a document and to match a webhook.

The status is processing, because the request carried the invoice that goods_purchase needs. A request that misses a document returns documents_required. See Purpose, details and documents.

The fields you send

FieldRequiredNotes
businessYesYour business id. Exactly 24 characters.
sourceCurrencyYesThe wallet you pay from.
destinationCurrencyYesCNY.
amountYesThe amount in the source currency.
senderIdYesThe sndr_ id.
counterpartyIdYesThe cp_ id.
customerReferenceYesYour own reference. It must be unique.
paymentSchemeYescnaps.
paymentDestinationYesbank_account.
Processing modeYesNormal or Instant. See Choose a processing mode.
purposeOfFundYesOne of 20 values for CNY.
relationshipWithBeneficiaryYesFor example supplier or employee.
additionalPayoutDetailsYesTrade details or salary details.
quoteReferenceFor a conversionThe reference of the quote.
filesNoThe supporting documents.
descriptionNoFree text.
📘

The samples above omit the processing mode

Take the mode field name from the API reference for POST /send and add it to each sample. Everything else in the samples is complete.

📘

Send senderId and paymentScheme every time

The schema marks both as optional. Fincra runs the sender checks and the foreign-currency flow only when you send senderId. Fincra builds the counterparty type from the currency and the payment scheme, so a missing paymentScheme returns a type mismatch.

The endpoint rejects any field that the table above does not list. It rejects beneficiary, sender, correspondent, intermediary, customerName, additionalInfo and documentType from the older POST /payouts endpoint.

Retry safely

customerReference must be unique for your business. Reuse the same reference when you retry after a 500 response. A second request with a reference that already succeeded returns Cannot continue, Duplicate Customer Reference Passed.

Track the payout

Fincra sends a webhook when the status changes. Match it on the payout reference.

StatusMeaning
documents_requiredFincra holds the payout. A document is missing.
processingFincra works on the payout.
pendingFincra waits on an internal step.
successfulThe counterparty received the money.
failedThe payout did not complete. Read message.
change_requestedFincra asks for a change.

Confirm every webhook against the payout reference before you release goods or services. The sandbox sends no payout webhook.

Next: Purpose, details and documents.


Did this page help you?