Create your first payment
⨠Method Payments allows you to push funds to any type of debt account (mortgage, student loan, credit cards, bills and more) at more than 10,000 financial institutions or loan servicers.
Stepsâ
- Create an entity that will become the holder/owner of both the source and destination accounts.
- Create a source account from which the payment's funds will be retrieved.
- Create a destination account where the payment's funds will be sent to.
- Create a payment with the source and destination accounts created.
1. Creating an entityâ
For this step, we'll create an individual
entity that will become the holder of the accounts. The holder entity is the
legal owner of any account connected. Using an incorrect entity with an account will lead to payment failure.
âšī¸ See entities to learn more.
Requestâ
- cURL
- Node.js
- Python
/entities
curl https://dev.methodfi.com/entities \
-X POST \
-H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
-H "Content-Type: application/json" \
-d '{
"type": "individual",
"individual": {
"first_name": "Kevin",
"last_name": "Doyle",
"phone": "+15121231111",
"email": "kevin.doyle@gmail.com",
"dob": "1997-03-18"
},
"address": {
"line1": "3300 N Interstate 35",
"line2": null,
"city": "Austin",
"state": "TX",
"zip": "78705"
}
}'
/entities
const entity = await method.entities.create({
type: 'individual',
individual: {
first_name: 'Kevin',
last_name: 'Doyle',
phone: '+15121231111',
email: 'kevin.doyle@gmail.com',
dob: '1997-03-18',
},
address: {
line1: '3300 N Interstate 35',
line2: null,
city: 'Austin',
state: 'TX',
zip: '78705',
},
});
/entities
entity = method.entities.create({
'type': 'individual',
'individual': {
'first_name': 'Kevin',
'last_name': 'Doyle',
'phone': '+15121231111',
'email': 'kevin.doyle@gmail.com',
'dob': '1997-03-18',
},
'address': {
'line1': '3300 N Interstate 35',
'line2': None,
'city': 'Austin',
'state': 'TX',
'zip': '78705'
}
})
{
"id": "ent_au22b1fbFJbp8",
"type": "individual",
"individual": {
"first_name": "Kevin",
"last_name": "Doyle",
"phone": "+15121231111",
"email": "kevin.doyle@gmail.com",
"dob": "1997-03-18"
},
"corporation": null,
"receive_only": null,
"address": {
"line1": "3300 N Interstate 35",
"line2": null,
"city": "Austin",
"state": "TX",
"zip": "78705"
},
"capabilities": [
"payments:send",
"payments:receive",
"data:sync"
],
"error": null,
"status": "active",
"metadata": null,
"created_at": "2020-12-09T00:40:51.107Z",
"updated_at": "2020-12-09T00:40:51.107Z"
}
2. Create a source accountâ
Now that we have an entity to hold accounts, we can create a source account for the entity we just created.
This account will become our payment source later on. Source accounts can only be of type ach
which includes
checking/savings accounts.
âšī¸ See source accounts to learn more
ACH Verificationâ
info
All ACH source accounts need to be verified. See ACH Verification to learn more
Requestâ
- cURL
- Node.js
- Python
/accounts
curl https://dev.methodfi.com/accounts \
-X POST \
-H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
-H "Content-Type: application/json" \
-d '{
"holder_id": "ent_au22b1fbFJbp8",
"ach": {
"routing": "367537407",
"number": "57838927",
"type": "checking"
}
}'
/accounts
const account = await method.accounts.create({
holder_id: 'ent_au22b1fbFJbp8',
ach: {
routing: '367537407',
number: '57838927',
type: 'checking',
},
});
/accounts
account = method.accounts.create({
'holder_id': 'ent_au22b1fbFJbp8',
'ach': {
'routing': '367537407',
'number': '57838927',
'type': 'checking'
}
})
{
"id": "acc_b9q2XVAnNFbp3",
"holder_id": "ent_au22b1fbFJbp8",
"type": "ach",
"ach": {
"routing": "367537407",
"number": "57838927",
"type": "checking"
},
"liability": null,
"clearing": null,
"metadata": null,
"status": "active",
"capabilities": [
"payments:receive",
"payments:send"
],
"error": null,
"created_at": "2020-12-09T00:40:51.107Z",
"updated_at": "2020-12-09T00:40:51.107Z"
}
3. Create a destination accountâ
Similar to the previous step, we need to create a destination account where the payment funds
will be sent to. Destination accounts are liability
accounts
which includes any type of liability (personal loans, credit cards, student loans, etc.)
Using Method Dataâ
đĄ You can automatically retrieve all of an entity's liabilities using Method Data. See the retrieve an entity's debts guide to learn more.
Demoâ
Using APIâ
info
To use the direct API method on a live environment you need to be PCI Compliant. Please contact us for more info.
âšī¸ See create an account to learn more
Requestâ
- cURL
- Node.js
- Python
/accounts
curl https://dev.methodfi.com/accounts \
-X POST \
-H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
-H "Content-Type: application/json" \
-d '{
"holder_id": "ent_au22b1fbFJbp8",
"liability": {
"mch_id": "mch_2",
"account_number": "1122334455"
}
}'
/accounts
const account = await method.accounts.create({
holder_id: 'ent_au22b1fbFJbp8',
liability: {
mch_id: 'mch_2',
account_number: '1122334455',
}
});
/accounts
account = method.accounts.create({
'holder_id': 'ent_au22b1fbFJbp8',
'liability': {
'mch_id': 'mch_2',
'account_number': '1122334455'
}
})
{
"id": "acc_Zc4F2aTLt8CBt",
"holder_id": "ent_au22b1fbFJbp8",
"type": "liability",
"ach": null,
"liability": {
"mch_id": "mch_2",
"mask": "4455",
"type": "student_loan",
"data_status": "pending",
"data_last_successful_sync": null,
"student_loan": {
"name": "FedLoan Student Loan",
"sub_type": "federal",
"sequence": 6,
"balance": 1952634,
"last_payment_amount": 1150,
"last_payment_date": "2022-04-22",
"next_payment_due_date": "2022-10-28",
"next_payment_minimum_amount": 0,
"disbursed_at": "2018-01-22",
"interest_rate_percentage": 3.4,
"interest_rate_type": "fixed"
}
},
"clearing": null,
"metadata": null,
"status": "active",
"capabilities": [
"payments:receive",
"data:sync"
],
"error": null,
"created_at": "2020-12-09T02:56:19.548Z",
"updated_at": "2020-12-09T02:56:19.548Z"
}
4. Create your first paymentâ
You now have all the information you need to create your first payment. Using the source account's id (acc_b9q2XVAnNFbp3
)
and the destination accounts id (acc_Zc4F2aTLt8CBt
), we'll create a $50 payment with the description Loan Pmt
.
âšī¸ See payments to learn more
Requestâ
- cURL
- Node.js
- Python
/payments
curl https://dev.methodfi.com/payments \
-X POST \
-H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"source": "acc_b9q2XVAnNFbp3",
"destination": "acc_Zc4F2aTLt8CBt",
"description": "Loan Pmt"
}'
/payments
const payment = await method.payments.create({
amount: 5000,
source: 'acc_b9q2XVAnNFbp3',
destination: 'acc_Zc4F2aTLt8CBt',
description: 'Loan Pmt',
});
/payments
payment = method.payments.create({
'amount': 5000,
'source': 'acc_b9q2XVAnNFbp3',
'destination': 'acc_Zc4F2aTLt8CBt',
'description': 'Loan Pmt'
})
{
"id": "pmt_rPrDPEwyCVUcm",
"reversal_id": null,
"source_trace_id": null,
"destination_trace_id": null,
"source": "acc_b9q2XVAnNFbp3",
"destination": "acc_Zc4F2aTLt8CBt",
"amount": 5000,
"description": "Loan Pmt",
"status": "pending",
"error": null,
"metadata": null,
"estimated_completion_date": "2020-12-11",
"source_settlement_date": "2020-12-09",
"destination_settlement_date": "2020-12-11",
"fee": null,
"created_at": "2020-12-09T00:42:31.209Z",
"updated_at": "2020-12-09T00:43:30.996Z"
}
đ It's that easy! The payment will be posted at the destination account in 2 business days.